JDK8:使⽤Optional进⾏变量判空、集合遍历
防⽌ NPE,是程序员的基本修养。
NPE(Null Pointer Exception)⼀直是我们最头疼的问题,也是最容易忽视的地⽅。NPE常是导致Java应⽤程序失败的最常见的原因。在⽇常研发⼯作中,经常会处理各种变量、集合,但在使⽤的过程中,往往要进⾏空判断,不然会出现NPE。
JDK8新特性之Optional介绍
Optional类实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional 类的引⼊很好的解决空指针异常。Optional提供很多有⽤的⽅法,这样我们就不⽤显式进⾏空值检测。尽量避免在程序中直接调⽤Optional对象的get()和isPresent()⽅法,避免使⽤Optional类型声明实体类的属性。
1.创建optional对象,⼀般⽤ofNullable()⽽不⽤of()
2.判断Null:
isPresent():如果创建的对象实例为⾮空值的话,isPresent()返回true,调⽤get()⽅法会返回该对象,如果没有值,调⽤isPresent()⽅法会返回false,调⽤get()⽅法抛出NullPointerException异常。
jdk怎么使用3.获取对象:
get()
4.使⽤map提取对象的值
如果我们要获取User对象中的roleId属性值,常见的⽅式是先判断是否为null然后直接获取,但使⽤Optional中提供的map()⽅法可以以更简单的⽅式实现
5.使⽤orElse⽅法设置默认值,Optional类还包含其他⽅法⽤于获取值,这些⽅法分别为:
6.使⽤filter()⽅法过滤
filter()⽅法可⽤于判断Optional对象是否满⾜给定条件,⼀般⽤于条件过滤,在代码中,如果filter()⽅法中的Lambda表达式成⽴,filter()⽅法会返回当前Optional对象值,否则,返回⼀个值为空的Optional对象。
Optional判空
Optional判空写法
Optional.ofNullable(变量).orElse(默认数值);
例如:求字符串user的长度(为空的时候返回0)
常规实现⽅式:
// 从前台界⾯获取输⼊的⽤户信息
String user = getUserFromUI();
if (user == null){
return 0;
} else {
return user.length();
}
使⽤JDK8中的Optional实现⽅式:
// 从前台界⾯获取输⼊的⽤户信息
String user = getUserFromUI();
return Optional.ofNullable(user).orElse("").length;
Optional循环遍历集合
例如:循环遍历集合
常规实现⽅式:
List<String> userList = getList();
if (list != null) {
for(String user: list){
System.out.println(user);
}
}
使⽤JDK8中的Optional实现⽅式:
List<String> userList = getList();
Optional.ofNullable(userList).orElse(new ArrayList<>()).forEach(user -> { System.out.println(user);
});
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论