Apache Commons'之间是否存在差异? CloseShieldInputStream
和Sun的NoCloseInputStream
? (实际上在我的JDK中我有com.sun.xml.internal.ws.util.NoCloseInputStream
但没有com.sun.xml.ws.util.NoCloseInputStream
)
来自文档:
CloseShieldInputStream
- 阻止基础输入流的代理流 闭合。
NoCloseInputStream
-InputStream
无法关闭。
答案 0 :(得分:3)
有一个微妙的区别:
CloseShieldInputStream
:调用close
方法后,系统会删除对最初代理的InputStream
的引用,并替换为no-op implementation。关闭流后,它不再可访问,但只暴露no-op流。然而,原始流从未关闭。
NoCloseInputStream
:重写close
方法不执行任何操作,即不调用代理InputStream
。在流可能被“关闭”之后,因此可以使用它,好像从未调用close
一样。但是,添加的方法doClose
仍会显示原始结算功能。
NoCloseInputStream
的两个版本之间没有区别,因为internal
不应该被使用,因为它被认为是Sun的JAX-WS实现的内部。后来移动了这个内部实现,使其成为公共API,这就是包名更改的原因。