这两种方法有什么区别:Optional.flatMap()
和Optional.map()
?
一个例子将不胜感激。
使用map
如果函数返回的对象,你需要或者flatMap
如果该函数返回的Optional
。例如:
public static void main(String[] args) {
Optional<String> s = Optional.of("input");
System.out.println(s.map(Test::getOutput));
System.out.println(s.flatMap(Test::getOutputOpt));
}
static String getOutput(String input) {
return input == null ? null : "output for " + input;
}
static Optional<String> getOutputOpt(String input) {
return input == null ? Optional.empty() : Optional.of("output for " + input);
}
两个打印语句都打印相同的内容。
这两种方法:和有什么区别? 请举例说明。
对可选项使用flatMap时出现异常: 为什么我不能用同样的方法呢?
鉴于这段代码: 这部分: 可以重写为: 我从一本书的示例中提取了这段代码,并说这两种解决方案不同,但我不理解为什么。
问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:
问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。