我知道這聽起來像一個愚蠢的問題。但是由於InterruptibleChannel只聲明一種方法:InterruptibleChannel接口的目的是擴展Java中的Channel接口嗎?
void close()
throws IOException
這是與Channel接口中的相同名稱/簽名。這種接口繼承的目的是什麼?
這是爲了反射目的在Java運行時?
我知道這聽起來像一個愚蠢的問題。但是由於InterruptibleChannel只聲明一種方法:InterruptibleChannel接口的目的是擴展Java中的Channel接口嗎?
void close()
throws IOException
這是與Channel接口中的相同名稱/簽名。這種接口繼承的目的是什麼?
這是爲了反射目的在Java運行時?
其目的是將可中斷通道提供的合約直接編入類型系統。合同的保證被認爲足以證明這一點。
具體地注意本句子的InterruptibleChannel文檔中:
信道支持異步關閉和中斷,當且僅當,它實現該接口。如有必要,可以在運行時通過
instanceof
運營商對其進行測試。
它是相同的簽名,但據說它也能夠投出AsynchronousCloseException
(也是IOException
)。
實際上,這實際上是一個「標記」接口,雖然在功能上等同於使用Channel
,但使用InterruptibleChannel
可能會使得閱讀代碼的人更加清楚。