前言
Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。
为什么要设计Optional?
在 Java 开发中,通常会使用 if-else 逻辑判断来解决 NullPointerException 问题,当有对象模型嵌套过多时,就会因过多的 if-else 判断而形成代码累赘。
使用Optional类可以避免显式的null值判断(null的防御性检查),避免因过多的 if-else 判断而形成的代码累赘。
通过使用 Optional 可减少代码中的判空,实现函数式编程。
Optional 的基本使用
一个实际的应用场景就是需要获取用户的地区 ID 信息,传统的获取方法如下代码清单2-1所示
//代码清单 2-1
//获取用户的地区 code
publish String getUserCountryCode(UserInfor user){
String countryCode = "";
if (user != null) {
Address address = user.getAddress();
if (address != null) {
Country country = address.getCountry();
if (country != null) {
String code = country.getCountryCode();
if (code != null) {
countryCode = code.toUpperCase();
}
}
}
}
return countryCode ;
}
代码清单 2-1 通过 if-else 重重校验可避免在调用过程中因某个对象为 null 而导致的 NullPointerException ,通过 Optional 类的函数式编程来实现同样的效果 如下代码清单 2-2所示 :
// 代码清单 2-2
public String getUs