Return 来自可选的值

Return value from Optional

如何使用 ifPresent 并避免 NullPointerExceptionOptional<String> 中 return 一个 String 值?

示例:

public String longestName() {
    Optional<String> longName = someList.stream().reduce((name1, name2) -> name1.length() > name2.length() ? name1 : name2);

    // If I do not want to use following
    // return longName.isPresent() ? longName.get() : "not present";

    // Can I achieve this using longName.ifPresent or longName.orElse("not present");
}

给return一个optional的值,或者一个默认值如果optional没有值,你可以使用orElse(other).

public String longestName() {
    Optional<String> longNameOpt = someList.stream().max(Comparator.comparingInt(String::length));
    return longNameOpt.orElse("not present");
}

请注意,我重写了您查找最长名称的代码:您可以直接使用 max(comparator) with a comparator comparing the length of each String. One such comparator can be obtained by calling Comparator.comparingInt(keyExtractor),密钥提取器是方法参考 String::length