如何从另一个可选对象中获取值?

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);
}