如何优雅的判断空值

public class A {
    private A1 a1;

    public A1 getA1() {
        return a1;
    }

    public void setA1(A1 a1) {
        this.a1 = a1;
    }
}
public class A1 {
    private A2 a2;

    public A2 getA2() {
        return a2;
    }

    public void setA2(A2 a2) {
        this.a2 = a2;
    }
}
public class A2 {
    private A3 a3;

    public A3 getA3() {
        return a3;
    }

    public void setA3(A3 a3) {
        this.a3 = a3;
    }
}
public class A3 {
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}
public class App 
{
    public static void main( String[] args )
    {
        //需求:通过a3获取其id的值
        A a = new A();
        A1 a1 = new A1();
        a.setA1(a1);
        A2 a2 = new A2();
        a1.setA2(a2);
        A3 a3 = new A3();
        a2.setA3(a3);
        a3.setId("888");

        //普通人的代码

        if(null!=a && null!=a.getA1() && null!=a.getA1().getA2()&& null!=a.getA1().getA2().getA3()){
            System.out.println(a.getA1().getA2().getA3().getId());
        }

      //优雅的写法
        String s = Optional.ofNullable(a)
                .map((k) -> k.getA1())
                .map((b) -> b.getA2())
                .map((c) -> c.getA3())
                .map(d -> d.getId()).orElse("dd");
        System.out.println(s);
    }
}

 

posted @ 2020-10-10 18:50  yangxiaohui227  阅读(263)  评论(0编辑  收藏  举报