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

java8中orElse和orElseGet的使用区别

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

java8中orElse和orElseGet的使用区别

java8中orElse和orElseGet的使用区别 总结

当ofNullable传入的对象为null时,orElse也会执行里面的方法,orElseGet也会执行。当ofNullable传入对象不为空,orElse会执行,但是orElseGet不会执行。

实例
@Test
public void TestOrElse() {
    // orElse举例
    UserOptional user = new UserOptional();
    user.setName(null);
    user.setSex("男");
    String message = Optional.ofNullable(user.getName()).orElse(printData("ofNullable为空, orElse"));

    UserOptional user1 = new UserOptional();
    user1.setName("小马");
    user1.setSex("男");
    String message1 = Optional.ofNullable(user1.getName()).orElse(printData("ofNullable不为空, orElse"));


    // orElseGet举例
    UserOptional user2 = new UserOptional();
    user2.setName(null);
    user2.setSex("男");
    String message2 = Optional.ofNullable(user2.getName()).orElseGet(() -> printData("ofNullable为空, orElseGet"));

    UserOptional user3 = new UserOptional();
    user3.setName("小马");
    user3.setSex("男");
    String message3 = Optional.ofNullable(user3.getName()).orElseGet(() -> printData("ofNullable不为空, orElseGet"));

    System.out.println("========================================");
    System.out.println(message);
    System.out.println(message1);
    System.out.println(message2);
    System.out.println(message3);
}


public static String printData (String message) {
    message = message.concat("被执行了");
    System.out.println(message);
    return message;
}

输出结果:

ofNullable为空, orElse被执行了
ofNullable不为空, orElse被执行了
ofNullable为空, orElseGet被执行了
========================================
ofNullable为空, orElse被执行了
小马
ofNullable为空, orElseGet被执行了
小马

程序结果分析:

可以看到:当ofNullable传入对象不为空,orElse也会执行!!!

使用的情景

当值是函数或者需要计算时建议使用orElseGet,当值是基础类型值时就用orElse
使用orElse的情形:数值,字符串,引用
orElse(0)
orElse(“unKnown”);
orElse(ref);

使用orElseGet的情形:函数调用
orElseGet(Collections.emptyMap);
orElseGet(Collections.emptyList);
orElseGet(RandomUtils::nextInt)

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

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

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