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

相关推荐

  • 大众创业万众创新时代 政校互动为学子创新创业盘点把脉

      近日,四川文化传媒职业学院邀请四川省人社厅、省就业训练中心、省创业服务指导中心的相关领导、专家在学院开展了就业创业政策宣讲与创新创业交流,学院党委书记谢桂兰、副院长吕晓南出席会议。   会上,学院副院长吕晓南代表学院对省人社厅、崇州市人社局、崇州孵化园区等领导和专家的到来表示热烈的欢迎,并汇报了学院大学生创新创业情况和大学生众创空间的工作情况。    崇…

    创业分享 2023-05-13
    71
  • 充分发挥秦创原创新驱动平台作用 西安多举措推动高校毕业生就业创业

      本报讯(记者 张艳芳)近日,记者从西安市政府获悉,为进一步做好高校毕业生等青年群体就业创业工作,推动就业创业工作高质量发展,西安市印发《进一步做好高校毕业生等青年群体就业创业工作的通知》(以下简称《通知》),《通知》明确了10项措施,促进毕业生更加充分就业。   全新搭建秦创原就业创业广场、秦创原人才就业创业直播基地等新平台新载体,更主动对接创新联合体、…

    创业分享 2023-05-10
    104
  • 浅谈如何避免创业风险_社会新闻_唐山环渤海新闻网

      当创业者为创办企业四处奔波、筹措资金时,朋友、亲属会提出一些中肯的建议,大家都会担心风险问题。如何才能避免创业过程中的风险呢?   期望值不宜过高。有的创业者在做创业计划时,不清楚第一年、第二年可以销售多少产品,赢得多少利润,这是切合实际的。职场瞬息万变,存在许多不确定因素,创业者目光要长远。   许多人佩服有勇气开创自己事业的人,但是不能把勇气和无所畏…

    创业分享 2023-05-19
    101
  • 重磅利好点燃A股 创业板迎火上浇油 之后如何布局?

    原标题:重磅利好点燃A股 创业板迎火上浇油 之后如何布局? 来源:私募排排网 两大重磅利好落地,周一三大股指集体大涨,上证指数向3000点大关发起猛烈攻击,收盘上涨2.28%,深成指上涨2.98%,创业板指则上涨3.72%,收报2146.18点并再度床下创三年多新高。两市成交量突破9000亿,合计成交9373亿元,券商板块大幅拉升,等多只券商股涨幅超过5%,…

    2023-05-12
    92
  • 今年河北省工会将投入2000万元扶持创业就业

    推进普惠化服务,截至2017年底,河北省累计发放工会会员卡751.1万张,洽谈签约优质商家4000多家,全省通惠项目达到305个,新建各级职工书屋示范点152家,发放电子职工书屋阅读卡5万张,新建“爱心妈妈小屋”560个,建成“环卫职工工间休息室”221个。今年,河北省将坚持发放工会会员卡和提高使用率并重,加大对项目补助,带动各地加大投入,重点开发职工乐享乐…

    创业分享 2023-05-19
    78

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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