从Optional返回值

时间:2015-10-11 11:22:41

标签: java java-8 optional

如何使用StringOptional<String>返回ifPresent值并避免NullPointerException

示例:

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");
}

1 个答案:

答案 0 :(得分:2)

如果可选项没有值,则返回可选值或默认值,可以使用orElse(other)

projectId

请注意,我重写了代码以找到最长的名称:您可以直接使用max(comparator)和比较器来比较每个String的长度。通过调用Comparator.comparingInt(keyExtractor)并使用密钥提取器作为方法参考public String longestName() { Optional<String> longNameOpt = someList.stream().max(Comparator.comparingInt(String::length)); return longNameOpt.orElse("not present"); } ,可以获得一个这样的比较器。