見過的方法,此評論:爲什麼InputStream和OutputStream實現Closeable並且Socket沒有?
//I wonder why Sun made input and output streams implement Closeable and left Socket behind
這將阻止它實現了可關閉的包裝匿名內部類的創建,並代理其Socket實例close方法。
見過的方法,此評論:爲什麼InputStream和OutputStream實現Closeable並且Socket沒有?
//I wonder why Sun made input and output streams implement Closeable and left Socket behind
這將阻止它實現了可關閉的包裝匿名內部類的創建,並代理其Socket實例close方法。
Closeable在Java5中引入,而Socket在JDK 1.0中引入。在Java7 Socket will be Closeable。
EDIT
可以使用反射,以便簡單地通過測試方法密切的存在以關閉在Java中4/5/6任何「可封閉」對象。使用這種技術允許你關閉,也就是說,一個結果集(具有close()方法,但沒有實現可關閉):
public static universalClose(Object o) {
try {
o.getClass().getMethod("close", null).invoke(o, null);
} catch (Exception e) {
throw new IllegalArgumentException("missing close() method");
}
}
我不知道,但我想在他們認爲有它的NIO的SocketChannel不夠好時間...
此外,插座已經存在了很長一段時間。開始將其稱爲Closeable而不是調用Socket.close()的新代碼不會向後兼容,因此可能在1.5時(他們添加了Closeable時),他們不認爲值得考慮不少用戶仍然希望與1.4兼容,並且因爲它沒有其他通用接口,所以很少將它看作是Socket的其他任何接口。
我認爲與1.4的向後兼容性不像現在這個問題那麼可能是Java7中出現的原因。
「akappa」有一個恕我直言的其他有效的點。
爲什麼不問這個問題?相反,你引用了一條評論,評論包含了難以閱讀的問題。 – Buttons840 2011-09-02 18:44:26
@ Buttons840我認爲這個問題顯然是在標題中提出的。正文包含說明。 – 2011-09-17 18:36:19