如何根据 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 语法”:

  1. 转换不完整,保持签名不变:

    public static String computeName(Person person) {
        return Optional.ofNullable(person).map(Person::getName).orElse(null);
    }
    
  2. 完全转换:

    public static Optional<String> computeName(Person person) {
        return Optional.ofNullable(person).map(Person::getName);
    }