我的代码类似于以下内容:
List<String> result = new ArrayList<>();
Optional<String> test = Optional.of("test");
Optional.of(test).ifPresent(optStr -> optStr.ifPresent(str -> result.add(str)));
我不明白的是为什么我必须做两个ifPresent()
通话而不是仅仅这样做...
List<String> result = new ArrayList<>();
Optional<String> test = Optional.of("test");
Optional.of(test).ifPresent(str -> result.add(str));
如果我已经在ifPresent()
上调用过一次Optional
,那是否应该让我在Optional
之后从ifPresent()
获取值?
答案 0 :(得分:4)
您创建了一个Optional<Optional<String>>
,第一个ifPresent
剥离了外部Optional
,并留下了Optional<String>
。您必须在内部ifPresent
上调用Optional
才能到达String
。