JDK8新特性 Optional类的使用
2021-02-26 本文已影响0人
牧心musing
1. 以前对null的处理方式
String name ="zhang";
if (name != null){
System.out.println("have name");
}else {
System.out.println("no name");
}
2. Optional类介绍
Optional是一个没有子类的工具类,是一个可以为null的容器对象,其作用主要就是为了解决避免Null检查,防止NullPointerException。
image.png
2.1 创建Optional类
-
Optional.of方法:of只能传入一个具体值,不能传入null
Optional<String> zhang = Optional.of("zhang");
-
Optional.ofNullable方法:ofNullable可以传入null
Optional<String> z = Optional.ofNullable("z");
-
Optional.empty 方法:empty 存入的是null
Optional<Object> empty = Optional.empty();
2.2 方法
- isPresent:判断Optional中是否有具体值
boolean present = optional1.isPresent();
- get: 获取optional中的值
如果有值,则返回具体值;如果没有值,则报错
Object o = optional3.get();
if (optional3.isPresent()){
System.out.println(optional3.get());
}else{
System.out.println("no name");
}
-
orElse
如果optional中有值,则取出这个值,如果没有,则使用orElse中的参数值。
optional3.orElse("o2");
-
ifPresent(Consumer<? super T> consumer)
里面有一个Consumer接口实现的参数
表示:如果有值就调用参数
optional3.ifPresent(s->{
System.out.println("have name" + s);
});