从Optional返回值
从Optional返回值
如何使用ifPresent方法从Optional
示例:
public String longestName() {
Optional
// 如果我不想使用以下代码
// return longName.isPresent() ? longName.get() : "not present";
// 我能否使用longName.ifPresent或longName.orElse("not present")来实现这一点?
}
问题的出现原因是在这段代码中,我们使用了一个Optional对象,并且希望在Optional没有值的情况下返回一个默认值。然而,我们没有使用正确的方法来实现这一目标。
解决方法是使用Optional的orElse方法。这个方法接受一个默认值作为参数,如果Optional对象没有值,就会返回这个默认值。
在这段代码中,我们首先使用stream的max方法和一个比较器来找到列表中最长的字符串。这个方法返回一个Optional对象,表示找到的最长字符串。然后,我们使用orElse方法,如果Optional对象没有值,就返回字符串"not present"作为默认值。
重新编写的代码如下:
public String longestName() { OptionallongNameOpt = someList.stream().max(Comparator.comparingInt(String::length)); return longNameOpt.orElse("not present"); }
这样,无论最长的字符串是什么,我们都可以确保返回一个非空的字符串作为结果。
通过使用orElse方法,我们可以避免在Optional对象没有值时出现空指针异常的情况,确保代码的健壮性和可靠性。