1

CloseShieldInputStreamApache Commons和 Sun之间有区别NoCloseInputStream吗? (实际上在我的 JDK 中有com.sun.xml.internal.ws.util.NoCloseInputStream但没有com.sun.xml.ws.util.NoCloseInputStream

从文档:

CloseShieldInputStream- 防止底层输入流被关闭的代理流。


NoCloseInputStream-InputStream无法关闭。

4

1 回答 1

3

有一个微妙的区别:

  1. CloseShieldInputStream:当close方法被调用时,对原始代理的引用InputStream被删除并替换为无操作实现。关闭一个流后,它因此不再可访问,而只公开无操作流。然而,原始流永远不会关闭。

  2. NoCloseInputStream:该close方法被重写以不做任何事情,即不调用代理InputStream。在流可能被“关闭”之后,因此可以像close从未调用过一样使用它。但是,添加的方法doClose仍然会公开原始的关闭功能。

NoCloseInputStream另一个版本的两个版本之间没有区别,internal只是不应该使用一个版本,因为它被认为是 Sun 的 JAX-WS 实现的内部版本。这个内部实现后来被移动以使其成为公共 API,这就是包名称更改的原因。

于 2014-09-16T10:16:53.570 回答