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は元の終了機能を引き続き公開します。

Sun の JAX-WS 実装の内部にあると見なされているため、一方が使用されることは想定されていないことをNoCloseInputStream除いて、他方の 2 つのバージョンに違いはありません。internalこの内部実装は、後でパブリック API にするために移動されたため、パッケージ名が変更されました。

于 2014-09-16T10:16:53.570 に答える