Java教程之教你更优雅的写法处理null检查

回顾以前对null的处理方式public class OptionalTest { public static void main(String[] args) { test01(“小黑”); test01(null); } public static void test01(String userName) { if (userName != null) { System.out.println(“用户名为: “ + userName); } else { System.out.println(“用户名为null”); } } }Optional类介绍

Optional是JDK1.8推出的一个新的类,是一个没有子类的工具类,Optional可以理解为一个容器,其内部仅能存放一个对象元素或者存放null。它的作用主要就是为了解决避免Null检查,防止NullPointerException。

Java教程之教你更优雅的写法处理null检查
Optional的基本使用

Optional类的创建方式:

方法

说明

Optional.of(T t)

创建一个 Optional 实例,内部保存t对象,如果t为null会出现空指针异常

Optional.empty()

创建一个空的 Optional 实例,内部保存null

Optional.ofNullable(T t)

若 t 不为 null,创建 Optional 实例,否则创建空实例

代码演示:

public static void test02() { Optional<String> o1 = Optional.of(“小马”); // Optional<String> o2 = Optional.of(null); // 如果t为null会出现空指针异常 Optional<String> o3 = Optional.empty(); Optional<String> o4 = Optional.ofNullable(null); System.out.println(“o1 = “ + o1); // System.out.println(“o2 = ” + o2); System.out.println(“o3 = “ + o3); System.out.println(“o4 = “ + o4); }

运行效果:

o1 = Optional[小马] o3 = Optional.empty o4 = Optional.empty

Optional类的常用方法:

方法

说明

isPresent()

判断是否包含值,包含值返回true,不包含值返回false

get()

如果Optional有值则将其返回,否则抛出NoSuchElementException

orElse(T t)

如果调用对象包含值,返回该值,否则返回参数t

orElseGet(Supplier s)

如果调用对象包含值,返回该值,否则返回 s 获取的值

代码演示:

public static void test03() { Optional<String> o5 = Optional.of(“小马”); Optional<String> o6 = Optional.empty(); Optional<String> o7 = Optional.ofNullable(null); // isPresent() : 判断是否包含值,包含值返回true,不包含值返回false。 if (o5.isPresent()) { // get() : 如果Optional有值则将其返回,否则抛出NoSuchElementException。 String userName = o5.get(); System.out.println(“用户名o5为:” + userName); } else { System.out.println(“用户名o5为null”); } if (o6.isPresent()) { String userName = o6.get(); System.out.println(“用户名o6为:” + userName); } else { System.out.println(“用户名o6为null”); } if (o7.isPresent()) { String userName = o7.get(); System.out.println(“用户名o7为:” + userName); } else { System.out.println(“用户名o7为null”); } }

运行效果:

用户名o5为:小马 用户名o6为null 用户名o7为nullOptional的高级使用

代码演示:

public static void test04() { Optional<String> o8 = Optional.of(“小程”); Optional<String> o9 = Optional.empty(); // 存在做的什么 o8.ifPresent(s -> System.out.println(“用户名o8为” + s)); o9.ifPresent(s -> System.out.println(“用户名o9为” + s)); } public static void test05() { Optional<String> o10 = Optional.of(“小序”); Optional<String> o11 = Optional.empty(); // 如果调用对象包含值,返回该值,否则返回参数 System.out.println(“用户名o10为: “ + o10.orElse(“不存在数据10”)); System.out.println(“用户名o11为: “ + o11.orElse(“不存在数据11”)); // 如果调用对象包含值,返回该值,否则返回参数Supplier得到的值 String s10 = o10.orElseGet(() -> {return “未知用户名10”;}); System.out.println(“s10 = “ + s10); String s11 = o11.orElseGet(() -> {return “未知用户名11”;}); System.out.println(“s11 = “ + s11); }

运行效果:

用户名o8为小程 用户名o10为: 小序 用户名o11为: 不存在数据11 s10 = 小序 s11 = 未知用户名总结

Optional可以理解为一个容器,其内部仅能存放一个对象元素或者存放null。它的作用主要就是为了解决避免Null检查,防止NullPointerException。OptionalorElseifPresentorElseGet等方法避免对null的判断,写出更加优雅简洁的代码。

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:Java教程之教你更优雅的写法处理null检查 https://www.dachanpin.com/a/cyfx/11894.html

(0)
上一篇 2023-05-12 03:54:09
下一篇 2023-05-12 03:55:11

相关推荐

  • 中国音乐财经网

    如何面对正确的受众,在对的时间,播放对的音乐?这位名叫戚渊的创业者选择了环境音乐领域并一发不可收拾。 文丨阿丽莎 王华中 2005年,戚渊离开工作了二十多年的上海人民广播电台,来到位于北京的中国国际广播电台工作。那一年,他和朋友老去东三环一家台湾餐馆吃饭,菜不错、环境也不错,但是音乐特别糟糕。 “每次我们去,如果旁边没有人,我们就会说,关掉音乐吧,别影响我们…

    创业分享 2023-06-16
    163
  • 资讯︱金奖背后的支撑体系:桂林电子科技大学“两融合 三坚持”创新创业人才培养模式

      第二届中国“互联网+”大学生创新创业大赛全国总决赛10月在华中科技大学落下帷幕,大赛设30个金奖、90个银奖、480个铜奖。桂林电子科技大学在参赛的149所高校、250支团队中脱颖而出,获得金奖,并被评为优秀组织高校(全国共20所)。 在本次大赛中,30支金奖队伍,28支来自“211”“985”高校,除去一支高职院校团队,该校团队是唯一来自地方院校的团队…

    2023-05-28
    111
  • 如果不曾有乐视网 创业板指数会怎样

      乐视网股票复牌以来,股价跌幅已超过了60%,那么创业板指数有没有随之受到大幅拖累呢?答案是没有。因为在其复牌之前,指数公司对创业板指数成分股进行季度调整时,已将乐视股票调整出局。   曾经的权重股乐视网为何会被调出创业板指数?按照指数编制规则,创业板指(399006)每季度调整一次,根据三个指标,即前6个月平均总市值的比重、平均自由流通市值的比重和平均成…

    创业分享 2023-05-15
    59
  • 江西省新余市渝水区2018年首期大学生创业培训班开班

    为鼓励和支持大学生创业,帮助大学生掌握创业知识,提高创业技能,渝水区公共就业人才服务局组织开展本次为期7天的创业培训。此次培训邀请了SYB专职教师为在校大学生讲解创业计划、创业项目、政策法规等方面的内容,并结合大学生的创业特点,在创业启动资金、创业项目选择、项目创办程序等方面做重点辅导,引导大学生转变就业观念,提高创业意识,掌握创业技能,规避创业风险。对毕业…

    创业分享 2023-06-15
    54
  • 哈尔滨电商产品和微商创业博览会开幕

      据了解,本届电商微商博览会以“产品国际化、营销多元化、微商无界化”为主题,展出面积12000平方米,吸引来成欣网平台、荣事达集团、绿农网等400余家企业参展。展会期间还将举办中国电子商务协会微商发展工作委员会黑龙江省中心成立的启动仪式,针对残疾人就业,鼓励和支持残疾人自主创业和多渠道就业的黑龙江省“互联网+残疾人就业与创业孵化基地”成立的启动仪式,微商创…

    创业分享 2023-05-28
    59

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信