CloseShieldInputStream против NoCloseInputStream

Есть ли разница между Apache Commons? CloseShieldInputStreamи солнцеNoCloseInputStream?(На самом деле в моем JDK у меня естьcom.sun.xml.internal.ws.util.NoCloseInputStreamно нетcom.sun.xml.ws.util.NoCloseInputStream )

Из документации:

CloseShieldInputStream - прокси-поток, который предотвращает закрытие основного входного потока.


NoCloseInputStream - InputStream это не может быть закрыто.

1 ответ

Решение

Есть небольшая разница:

  1. CloseShieldInputStream: Когда close вызывается метод, ссылка на изначально проксированный InputStream удаляется и заменяется неоперативной реализацией. После закрытия потока он больше не доступен, а только открывает неиспользуемый поток. Оригинальный поток, однако, никогда не закрывается.

  2. NoCloseInputStream: close метод переопределен, чтобы ничего не делать, т.е. не вызывать прокси InputStream, После того, как поток предположительно "закрыт", его можно использовать как close никогда не звонил. Добавленный метод doClose однако, все еще выставляет оригинальную функциональность закрытия.

Там нет никакой разницы между двумя версиями NoCloseInputStream кроме этого internal один не должен использоваться, поскольку считается внутренним для реализации Sun JAX-WS. Эта внутренняя реализация была позже перемещена, чтобы сделать ее общедоступным API, поэтому имя пакета изменилось.

Другие вопросы по тегам