栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Optional使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Optional使用

引用:https://zhuanlan.zhihu.com/p/40966718

Optional 是在java.util包下的一个用于替代null的工具类

构造方法:
- Optional.of()    传入非null的值构造,如果传入null,会抛出NullPointerException
- Optional.ofNullable()   允许传入参数为空,如果为空就相当于是Optional.empty()
- Optional.empty()  
常用方法:
	ifPresent(Consumer)  
	orElse()
	orElseGet(Supplier)
	orElseThrow(Supplier)
	map(Function)  
	flatMap(Function)
	filter(Predicate)

orElseThrow() 没有就抛出异常,结合springmvc中,全局异常处理

代码:

public class OptionalDemo {
    @Test
    public void test02(){
        Optional o = Optional.of("123");
        Optional o1 = Optional.ofNullable(null);
        Optional empty = Optional.empty();
        System.out.println(o1==empty);
        System.out.println(o1==null);

        // ifPresent() 如果有值 Consumer 否则,什么都不做
        o.ifPresent(System.out::println);
        o1.ifPresent(System.out::println);

        System.out.println("=========================");
        // orElse()   如果Optional中有值,则返回,如果没有则使用orElse() 传入值
        Object o2 = o.orElse("456");
        Object o3 = o1.orElse("456");
        System.out.println(o2);
        System.out.println(o3);


        // orElseGet() 如果Optional中有值,则返回,没有则用Supplier返回
        Object o4 = o.orElseGet(() -> {
            return "silly b";
        });


        // orElseThrow()  找不到抛异常  例子:springmvc配置统一处理各种异常
        Object o5 = o.orElseThrow(() -> {
            return new RuntimeException("hehe");
        });
    }

    @Test
    public void test03(){
        Optional o = Optional.ofNullable("cc");
        // map()  如果当前Optional为Optional.empty()  什么都不做,否则,返回一个新的Optional,值为map计算出来的值
        Optional s = o.map((item) -> {
            return item + "  hello";
        }).map((item)->{return item+" silly b";});
        System.out.println(s.orElse("unknown"));


        // flatMap() 和 map() 区别在于: map返回的是值,然后map方法会使用Optional.ofNullable将其包装为Optional。。而flatMap要求返回的就是Optional对象
        Optional haha = Optional.empty().flatMap((item) -> {
            return Optional.of("haha");
        });
        System.out.println("haha = " + haha.orElse("unknown"));
    }


    @Test
    public void test04(){
        Optional i = Optional.ofNullable(123);
        // filter() 判断是否满足条件,满足返回当前值,不满足返回Optional.empty()
        Optional o = i.filter((item) -> {
            return item < 100;
        });
        Integer a = o.orElse(-1);
        System.out.println("a = " + a);
        
    }
    
}



转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号