为什么Optional.of()。ifPresent()在ifPresent()内部创建一个Optional?

时间:2019-06-13 13:57:07

标签: java

我的代码类似于以下内容:

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()获取值?

1 个答案:

答案 0 :(得分:4)

您创建了一个Optional<Optional<String>>,第一个ifPresent剥离了外部Optional,并留下了Optional<String>。您必须在内部ifPresent上调用Optional才能到达String