Я думаю, nullOutputStream
очень просто и понятно: просто отбросить вывод (аналогично > /dev/null
) и / или для тестирования (не нужно изобретать OutputStream
).
An (очевидно,простой примерне содержат никаких данных, или вы не можете доставить, и где null
не является приемлемым вариантом:
importer.importDocument("name", /* input stream... */);
InputStream inputStream = content.getInputStream(); // better having no data to read, then getting a null
Когда вы тестируете этот импортер, вы можете просто использовать nullInputStream
там, снова вместоизобретать свой собственный InputStream
или вместо использования макета.Другие варианты использования здесь скорее похожи на обходной путь или неправильное использование API; -)
Относительно возврата InputStream
: это скорее имеет смысл.Если у вас нет никаких данных, вы можете вернуть это nullInputStream
вместо null
, чтобы вызывающим абонентам не приходилось иметь дело с null
, и они могли бы просто читать, как если бы были данные.
Наконец, это просто удобные методы, облегчающие жизнь без добавления другой зависимости ;-) и, как уже говорили другие (комментарии / ответы), это в основном реализация шаблона нулевого объекта .
Использование null*Stream
также может иметь преимущество в том, что тесты выполняются быстрее ... если вы выполняете потоковую передачу реальных данных (конечно ... в зависимости от размера и т. Д.), Вы можете просто без необходимости замедлять свои тесты, и мы всехотите, чтобы тесты прошли быстро, верно?(некоторые тут насмехаются ... ну ...)