CloseShieldInputStream против NoCloseInputStream
Есть ли разница между Apache Commons? CloseShieldInputStream
и солнцеNoCloseInputStream
?(На самом деле в моем JDK у меня естьcom.sun.xml.internal.ws.util.NoCloseInputStream
но нетcom.sun.xml.ws.util.NoCloseInputStream
)
Из документации:
CloseShieldInputStream
- прокси-поток, который предотвращает закрытие основного входного потока.
NoCloseInputStream
-InputStream
это не может быть закрыто.
1 ответ
Есть небольшая разница:
CloseShieldInputStream
: Когдаclose
вызывается метод, ссылка на изначально проксированныйInputStream
удаляется и заменяется неоперативной реализацией. После закрытия потока он больше не доступен, а только открывает неиспользуемый поток. Оригинальный поток, однако, никогда не закрывается.NoCloseInputStream
:close
метод переопределен, чтобы ничего не делать, т.е. не вызывать проксиInputStream
, После того, как поток предположительно "закрыт", его можно использовать какclose
никогда не звонил. Добавленный методdoClose
однако, все еще выставляет оригинальную функциональность закрытия.
Там нет никакой разницы между двумя версиями NoCloseInputStream
кроме этого internal
один не должен использоваться, поскольку считается внутренним для реализации Sun JAX-WS. Эта внутренняя реализация была позже перемещена, чтобы сделать ее общедоступным API, поэтому имя пакета изменилось.