Java 8 中的 Optional 的优点究竟在哪里?
首先,如果Optional 使用不当,那和直接if else没有区别,反而更加复杂了。
举个例子:
首先,我们不使用Optional 来判空,他应该长这个样子
public String getName(User user){
if(user == null){
return "Unknown";
}else return user.name();
}
然后我们仅仅使用isPresent方法来替代原先user==null
(反例):
public String getName(User user){
Optional<User> u = Optional.ofNullable(user);
if(!u.isPresent()){
return "Unknown";
}else return u.get().name();
}
感觉还不如直接使用if else,反而更加复杂了,那正确的做法是什么呢?
public String getName(User user){
return Optional.ofNullable(user).map(u -> u.name).orElse("Unknown");
}
完美!
Optional采用链式编程的风格,可以帮助我们顺着一口气写完,在途中无需进行进行一层层判断,或许例子中看着好像也没有简化多少的样子,那你可以用两种方法,解决一下这句代码的判空,Optional的优雅性和先进性就一览无余了。
String result = test.getName().getTime().getNum().getAnswer()...;
Optional代替if else去做判空,毫无疑问的,解决了心里的疑惑,就去多熟悉熟悉这个玩意吧,贴两篇教程,非常值得一看
Java:如何更优雅的处理空值?
Java 8 中使用 Optional 处理 null 对象
推荐好文
强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!
原文始发于微信公众号(Java笔记虾):Java 8 中的 Optional 的优点究竟在哪里?