По сути, мне нужно получить размер необязательного списка в необязательном объекте. Что-то вроде:
private int getCount(@NonNull Optional<myObject> aaa) {
if (aaa.isPresent() && aaa.get().getMyList().isPresent()) {
return aaa.get().getMyList().get().size();
}
return 0;
}
Код не выглядит красиво. Какой элегантный способ получить это? С ifPresent(). orElse()? Заранее спасибо!
Последовательные map
(или flatMap
, если что-то возвращает Optional
) операции и финальная orElse
:
private int getCount(@NonNull Optional<myObject> cvm) {
return cvm
.flatMap(x -> x.getMyList())
.map(list -> list.size()) // or List::size
.orElse(0);
}
Optional
в качестве (и, возможно, с таким же атрибутом)