java8 引入了Optional类,让我们可以以一种更加优雅的方式处理代码里的各种null值,但如果只是用Optional的isPresent()方法来代替原来代码中的null判断的话,其实和原来的写法也没有太大的区别,代码依然臃肿,也依然不利于阅读。
实际上除了isPresent()之外,optional提供的map(), orElse(), orElseGet()等方法才是Optinal真正的强大之处,下面的代码组合使用了map()和orElse()方法来处理null值,看下是不是比用各种if-else来判断null值优雅多了呢。
import java.util.Optional;
public class TestOptional {
public static void main(String[] args) {
Entityt1 e1 = new Entityt1();
// Entityt1 e1 = null;
//e1.getS1()为null
System.out.println(e1.getS1());
//option - 对于null值判断的优雅写法(将原本需要复杂if-else的判断写成一句)(若e1为null也会打印"empty val")
Optional<Entityt1> op1 = Optional.ofNullable(e1);
System.out.println(op1.map(op2 -> op2.getS1()).orElse("empty val"));
//以下语句与上面用optional的语句等效
if (e1 != null) {
if (e1.getS1() != null) {
System.out.println(e1.getS1());
} else {
System.out.println("empty val");
}
} else {
System.out.println("empty val");
}
}
}
class Entityt1{
private String s1;
private String s2;
public String getS1() {
return s1;
}
public void setS1(String s1) {
this.s1 = s1;
}
public String getS2() {
return s2;
}
public void setS2(String s2) {
this.s2 = s2;
}
}
网友评论