如何根据 Optional 对 java 中另一个不同对象的空检查 return 一个不同的对象?
How to return a different object based on Optional's null check on another different object in java?
如何使用 Optionals 将其转换为现代 Java 语法?
public String computeName(Person person) {
if(person != null) return person.getName();
return null;
}
我试过了,但这当然是错误的,因为 orElse 将 return Person 对象的实例,而不是 String 名称。为此,我认为我需要链接另一个可选项。
public String getName(Person person) {
return Optional.ofNullable(person).orElse(person.getName());
}
我想减少代码并使用可选的现代 java 语法来完成这项工作。或者任何其他标准库也可以,例如 ApaceUtils 或 Google-Guava 等
本质上,如果人对象本身不为空,我想 return 人的名字。在某些情况下,如果我的方法 returns null 而不是字符串,我也很好,因为调用者总是使用 Apache Commons StringUtils.isNotBlank(顺便也检查 null)进行检查。
public static String computeName(Person person) {
if(person != null) return person.getName();
return null;
}
有两种方法可以将上述代码转换为“使用 Optional
的现代 Java 语法”:
转换不完整,保持签名不变:
public static String computeName(Person person) {
return Optional.ofNullable(person).map(Person::getName).orElse(null);
}
完全转换:
public static Optional<String> computeName(Person person) {
return Optional.ofNullable(person).map(Person::getName);
}
如何使用 Optionals 将其转换为现代 Java 语法?
public String computeName(Person person) {
if(person != null) return person.getName();
return null;
}
我试过了,但这当然是错误的,因为 orElse 将 return Person 对象的实例,而不是 String 名称。为此,我认为我需要链接另一个可选项。
public String getName(Person person) {
return Optional.ofNullable(person).orElse(person.getName());
}
我想减少代码并使用可选的现代 java 语法来完成这项工作。或者任何其他标准库也可以,例如 ApaceUtils 或 Google-Guava 等
本质上,如果人对象本身不为空,我想 return 人的名字。在某些情况下,如果我的方法 returns null 而不是字符串,我也很好,因为调用者总是使用 Apache Commons StringUtils.isNotBlank(顺便也检查 null)进行检查。
public static String computeName(Person person) { if(person != null) return person.getName(); return null; }
有两种方法可以将上述代码转换为“使用 Optional
的现代 Java 语法”:
转换不完整,保持签名不变:
public static String computeName(Person person) { return Optional.ofNullable(person).map(Person::getName).orElse(null); }
完全转换:
public static Optional<String> computeName(Person person) { return Optional.ofNullable(person).map(Person::getName); }