Optional使用

 

import java.util.HashMap;
import java.util.Map;

// 最外层对象
public class Outer {
    Nested nested;
    Nested getNested() {
        return nested;
    }
}
// 第二层对象
class Nested {
    Inner inner;
    Inner getInner() {
        return inner;
    }
}
// 最底层对象
class Inner {
    String foo;
    String getFoo() {
        return foo;
    }
}

 

import java.util.Optional;
import org.junit.Test;

public class test {
    @Test
    public void test01(){
        Outer outer = new Outer();
        if (outer != null && outer.nested != null && outer.nested.inner != null) {
            System.out.println(outer.nested.inner.foo);
        }
    }
    @Test
    public void test02(){
        Optional.of(new Outer())
//            .map(Outer::getNested)
            //x可以表示传入的Outer对象
            .map(x -> {
                return x.getNested();
            })
            .map(Nested::getInner)
            .map(Inner::getFoo)
//            .ifPresent(System.out::println); // 如果不为空,最终输出 foo 的值
            .ifPresent(foo -> {
                System.out.println(foo);
            });

    }
//如果使用context对象中的属性是map对象(一般不建议),传入ele为map对象
//        Optional.ofNullable(context.getMap())
//                .map(ele -> ele.get("indexKey"))
//                .ifPresent(index -> {
//                    otherObject.setIndex(index);
//                });
}

语法参考:

【原创】JAVA8之妙用Optional解决NPE问题

https://www.cnblogs.com/fx-blog/p/11747058.html

最佳实践参考:

https://zhuanlan.zhihu.com/p/128481434

https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be

posted on 2022-09-24 19:27  passionConstant  阅读(27)  评论(0编辑  收藏  举报