如何从另一个可选对象中获取值?
How to get value from an optional object in another optional?
基本上,我需要在可选对象中获取可选列表的大小。类似于:
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
,以防returns和Optional
)操作,最后orElse
:
private int getCount(@NonNull Optional<myObject> cvm) {
return cvm
.flatMap(x -> x.getMyList())
.map(list -> list.size()) // or List::size
.orElse(0);
}
基本上,我需要在可选对象中获取可选列表的大小。类似于:
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
,以防returns和Optional
)操作,最后orElse
:
private int getCount(@NonNull Optional<myObject> cvm) {
return cvm
.flatMap(x -> x.getMyList())
.map(list -> list.size()) // or List::size
.orElse(0);
}