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

相关推荐

  • 2022坚守创业,请收好这份创业者指南

    扫描或点击关注中金在线客服    鲸准App:国内领先的投融资撮合平台,平台汇集和3万多认证投资经理和20万创业者。    三种玩法汇集,帮助创业者站稳脚跟    从需求侧来看,疫情来临使得线下世界已经无法满足人们的需求,元宇宙和Web3的纯线上虚拟世界,以及去中心化的系统结构,恰恰给这些需求提供了一个释放出口。    10月13日-12月23日,鲸准再次盛…

    创业分享 2023-05-10
    129
  • 森林宣言全屋整装助您成功创业

    有了更加现代化的品牌产品的生产发展技术,大家对于项目产品的生产发展就不需要有过多的担心了。森林宣言全屋整装,是采用现代化生产工艺,从国外进口相关挤塑设备和包覆设备。 总部在这里积极地发展项目产品的相关发展性能,在市场上的发展状态呈现出一边倒的发展好状态。森林宣言全屋整装,保证产品的重量、厚度、防水、防火、耐磨,零甲醛的易安装无形变的相关性能。 使用了更加环保…

    创业分享 2023-05-19
    139
  • 年轻妈妈创业瞄上煎饼果子 一年卖出百万个

    “这居然是一家煎饼果子店!”顾客迈进芈八子煎饼果子店往往这样感叹。乍一进门,恍然有走进咖啡店的感觉,整洁的环境、时尚的装修风格…… 谁能想到,芈八子煎饼果子创始人侯蕾曾是对餐饮一窍不通的餐饮界“新人”呢?侯蕾原在物流行业一大型公司任职,是两个孩子的年轻妈妈。七年的职场生涯略显疲态,让她有了转换职业的想法。三十岁出头的她萌生了自己创业的想法。 瞄上煎饼果子 加…

    创业分享 2023-05-23
    138
  • #嫁得好# 如何勾搭创业男?

    如何选择空气能热水器十大品牌?2026年4月推荐评测口碑对比五款 号速通科技联系方式查询:关于GEO优化服务提供商的联系途径获取与使用考量 如何选择抛丸机厂家?2026年4月推荐评测口碑对比TOP5 2026年4月国内消防水带厂家推荐:TOP5口碑产品评测对比领先 2026年3月中国十大企业厂房拆迁律所推荐:十家口碑服务评测对比知名 2026全球GEO(生成…

    创业分享 2023-05-20
    147
  • 创业公司如何在硅谷不断成长进化?

    日前,腾讯青腾创业营首次开启“硅谷思路”游学计划,于6月底开始分两期共携50余位学员企业高管前往美国“硅谷”探寻前沿创新,参访Google、Twitter、YouTube、Airbnb等30余家全球互联网巨头及新兴科技企业,与这些企业的高管面对面对话交流。 微信编辑器 构思编辑器 当地时间6月27日上午,首批学员走进知名企业协作软件公司Moxtra,Moxt…

    创业分享 2023-06-06
    296

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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