Optional中避免Null检查
可以为null的容器对象,作用就是为了解决避免NULL检查,防止抛出空指针异常
基本使用
创建Optional对象
Optional.of() ;//创建Optional对象
//传入非空值可正常运行,传入null则会抛出空指针异常
Optional.ofNullLable();
//即可传入具体指,也可传入null
Optional.empty();
//无参数,传入一个空
判断Optional是否有具体值
Optional op = Optional.of("***");
op.isPresent();//会返回一个Boolean对象
//有值返回truee,无值返回false
获取Optional中的值
Optional op = Optional.of("***");
op.get();//如果有值返回值,无值会报错
高级使用
orElse
//有值
Optional<String> op = Optional.of("****");
//无值
Optional<String> op2 = Optional.empty();
//如果op2为空,则会返回op值,否则会返回op值,所以op值不能为空
String op3 = op2.isElse(op);
ifPresent
//有值
Optional<String> op = Optional.of("****");
//无值
Optional<String> op2 = Optional.empty();
//含义:如果Optional对象存在值,则执行lambda表达式,否则什么也不做
op.ifPresent(s ->{
System.out.println(op);
});
op2.ifPresent(s ->{
System.out.println(op2);
});
ifPresentOrElse
//有值
Optional<String> op = Optional.of("****");
//无值
Optional<String> op2 = Optional.empty();
//含义:如果Optional对象存在值,则执行第一个lambda表达式,否则执行第二个lambda表达式
op.ifPresentOrElse(s ->{
System.out.println(op),()->{
System.out.println("没有值")
}
});
该接口在JDK9版本,8版本是没有的