Java 8 中的 Optional 的优点究竟在哪里?

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

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 后台管理系统竟然出了详细教程!

分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!

能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮!

Java 8 中的 Optional 的优点究竟在哪里?

原文始发于微信公众号(Java笔记虾):Java 8 中的 Optional 的优点究竟在哪里?