В вашем текущем коде есть критический недостаток, т. Е.
if(container!=null || !container.isEmpty())
это все еще может выдать NullPointerException
(когда container == null
), если условный оператор не изменен на &&
. Публикуйте, что реализация ниже будет то, что я хотел бы предложить следующее.
Это почти правильно, в том смысле, что вам нужно обработать некоторое значение по умолчанию, если условия не выполняются:
DD detail = container.stream().findFirst().orElse(null); // or some default value instead of 'null'
Если container
сам по себе может быть нулевым, используйте
DD detail = container != null ?
container.stream().findFirst().orElse(null) : null;
В случае, если вам нужен рецепт от этого объекта, используйте map
как:
container.stream().findFirst().map(DD::getPrescription).orElse(null)
// ^^
// return type of prescription then
С Java-9 это могло бы быть намного проще:
A<DD, DI> basePrescription = Stream.ofNullable(container) // Java-9 API
.flatMap(List::stream)
.findFirst()
.map(DD::getPrescription)
.orElse(null);