做网站 seo,h5免费制作平台易企秀网页版,百度有几个总部,货运配载做网站Optional 类主要解决的问题是臭名昭著的空指针异常NPE#xff08;NullPointerException#xff09; 在 Java 8 之前#xff0c;任何访问对象方法或属性的调用都可能导致 NullPointerException#xff1a;
String isocode user.getAddress().getCountry().getIsocode().to…Optional 类主要解决的问题是臭名昭著的空指针异常NPENullPointerException 在 Java 8 之前任何访问对象方法或属性的调用都可能导致 NullPointerException
String isocode user.getAddress().getCountry().getIsocode().toUpperCase();在这个小示例中如果我们需要确保不触发异常就得在访问每一个值之前对其进行明确地检查
if (user ! null) {Address address user.getAddress();if (address ! null) {Country country address.getCountry();if (country ! null) {String isocode country.getIsocode();if (isocode ! null) {isocode isocode.toUpperCase();}}}
}使用Optional可以精简代码降低复杂度
String result Optional.ofNullable(user).flatMap(User::getAddress).flatMap(Address::getCountry).map(Country::getIsocode).orElse(default);Optional 创建
创建 Optional 对象主要三种 ● Optional.of(T t)创建一个 Optional 对象参数 t 必须非空 ● Optional.empty()创建一个空的Optional实例 ● Optional.ofNullable(T t)创建一个Optional对象参数t 可以为 null。
empty(): 尝试访问 emptyOpt 变量的值会导致 NoSuchElementException。
OptionalUser emptyOpt Optional.empty();
emptyOpt.get();of(): 如果user为空会抛出NullPointerException。
OptionalUser opt Optional.of(user);ofNullable(): 如果对象即可能是 null 也可能是非 null你就应该使用 ofNullable() 方法。
OptionalUser opt Optional.ofNullable(user);