- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我注意到如果我按以下方式使用 Optional:
Object returnValue = Optional.ofNullable(nullableValue)
.map(nonNullValue -> firstMethod(arg1, nonNullValue))
.orElse(secondMethod)
当nullableValue 不为null 时,它正在执行第一个方法和第二个方法。难道我做错了什么?我希望它仅在 nullableValue 不为 null 时执行 firstMethod。
map 和 flatMap 似乎有前置条件(if(!isPresent()
)。但是,orElse 没有。如何在不使用 if not null 条件的情况下使用 java8 编写代码?
根据评论,示例代码:
public static String firstMethod(String someString) {
System.out.println("In first method");
return someString;
}
public static String secondMethod() {
System.out.println("In second method");
return "secondMethod";
}
public static void main(String a[]) {
String nullableString = "nonNullString";
String result = Optional.ofNullable(nullableString)
.map(nonNullString -> firstMethod(nonNullString))
.orElse(secondMethod());
System.out.println("Result: "+result);
}
输出:
In first method
In second method
Result: nonNullString
最佳答案
您正在调用第二个方法作为参数传递给 orElse()
调用。 orElse()
不是像 map
调用那样调用 secondMethod()
的那个。您传递的是 secondMethod()
的返回值,而不是方法本身。
你想做什么:
Optional.ofNullable(nullableValue).map(MyClass::firstMethod).orElseGet(MyClass::secondMethod);
它的作用是将 secondMethod 转换为供应商。这样它仅在可选为空时调用。
关于java - Java 8 中可选的 ofNullable 执行流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578269/
这个问题在这里已经有了答案: How to convert Optional to Optional [closed] (3 个答案) 关闭 2 年前。 我正在尝试在 Optional.OfNull
我想知道使用Optional.ofNullable()是否有退出 for(String name: names){ if(name != null) person = "Mr./Mrs.
我可以使用 Java8 提取特定部分,如下所示 request.getBody() .getSections() .filter(section -> "name".equ
我想知道使用Optional.ofNullable()是否有退出 for(String name: names){ if(name != null) person = "Mr./Mrs.
有时我得到的值为 [null]对于 List employees 。为了防止我执行以下检查 List employees …. if((employees.size()>0 && employees.
我有一种方法来验证电子邮件的收件人。 在我的代码中 .map(Recipient::getId) 产生错误: Non static method cannot be reference from a
哪种空检查更可取? Optional.ofNullable(port).ifPresent(settings::setPort); 或 if (port != null) { settings.
我对 Optional.ofNullable 方法感到惊讶。有一天我写了一个应该返回 Optional 的函数: private Optional extractFirstValueFrom(Insi
我有一个嵌套类结构,用于反序列化我的数据: Class A has a single property that is an object of Class B (say b) Class B has
此 using optionals correctly is not optional 中的第 12 项文章状态 Sometimes, we tend to "over-use" things. Me
java.util Optional.ofNullable 是否与 Mockito 一起正常工作? 在代码执行过程中,我遇到了这样的事情: User user = Optional.ofNullabl
考虑这个表达式的用法: String hi = Optional.ofNullable(sayHi()).orElse("-"); 有效对应于这个三元表达式: String hi = sayHi()
没有的原因是什么: OptionalInt.ofNullable(Integer); 如果您想将可选/可为空的 Integer 转换为 OptionalInt,这似乎是一个完美的选择。我目前正在使用我
首先,我知道这两种方法的区别。 Optional.of : 用于保证不存在null,如果输入null,nullPointExcepction Optional.ofNullable :可能为空,也可能
我正在开发一个java应用程序,我发现了这两个选项: 一个是jdk原生的Optional.ofNullable,另一个是来自guava库的Optional.fromNullable。 简单来说,它们的
我对 Java 8 可选有疑问。 下面的代码给出编译错误: Integer number = Optional.ofNullable(new Integer(10)); 但是当我们执行以下操作时,它不
这个问题已经有答案了: Optional.of(null)will throw NPE, I need to verify null before call the method? (2 个回答) 已
这个问题在这里已经有了答案: Uses for Optional (14 个答案) 关闭 5 年前。 我最近看到一个blog post ( tweeted by @java ) 这表明以下代码正变得
我注意到如果我按以下方式使用 Optional: Object returnValue = Optional.ofNullable(nullableValue) .map(nonNu
我有一个关于 Java 8 的问题 Optional ,其目的是解决 NullPointerException 异常。 问题是,让我们选择两种类型的原因是什么: Optional.of(T value
我是一名优秀的程序员,十分优秀!