教你练会java8新特性-Optional类,玩转空指针
程序员文章站
2022-06-07 15:34:33
...
1:利用Optional类判断是否为空
ic class Test {
public static void main(String[] args) {
String a = "test";
String opt = Optional.ofNullable(a).map(String :: toUpperCase).orElse("没有值");
System.out.println(opt);
}
}
说明:
Optional.ofNullable(a)-----------将参数传入,创建Optional对象
map方法进行逻辑处理,orelse方法进行空值返回
map方法可以传入类,类的方法,也可以写成lambda表达式的方式
import java.util.Optional;
public class Test {
public static void main(String[] args) {
String a = "test";
// String opt = Optional.ofNullable(a).map(String :: toUpperCase).orElse("没有值");
String opt = Optional.ofNullable(a).map(t -> t.toUpperCase()).orElse("没有值");
System.out.println(opt);
}
}
2:利用orElseGet调用方法取的返回值,说明见注释
import java.util.Optional;
public class Test {
public static void main(String[] args) {
String a = null;
String opt = Optional.ofNullable(a)//创建一个opt对象
.map(String :: toUpperCase)//如果不为空的话,则变成大写
.orElseGet(() -> get("BC"));//为空的话,执行新的方法逻辑
System.out.println(opt);
}
public static String get(String args) {
return Optional.ofNullable(args)
.filter(a -> a.equals("ABC"))//过滤自己的逻辑判断
.map(String :: toLowerCase).orElse("end");
}
}
接下来有个注意的点,感兴趣的可以自行测试一下:
//注意:map和flatMap的用法,
//多次map后,你得到就是多次多层嵌套在Optional里面的值
/* String s = Optional.ofNullable(person)
.flatMap(p -> Optional.ofNullable(p.getCar()))
.map(i -> i.getName())
.orElse("");*/