Это становится проще, когда вы используете поток:
return Stream.of(entity1, entity2, entity3)
.filter(Optional::isPresent)
.map(Optional::get)
.flatMap(List::stream)
.collect(Collectors.collectingAndThen(Collectors.toList(), Optional::of));
Важно отметить, что эта опция никогда не будет пустой.Он будет содержать, по крайней мере, пустой список, который отрицает цель использования опций.При использовании типов Collection
в качестве типов возврата, Optional
на самом деле не используются, потому что рекомендуется возвращать коллекцию empty , где будет использоваться пустой необязательный параметр.
Так что я бы просто изменилтип возврата метода - List
, и пусть поток возвращает пустой список, когда необязательный ввод не является присутствует .