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

相关推荐

  • 女生高考后卖冰棍积累创业经验

        18日清晨,武汉中心气象台发布高温橙色预警信号:武汉最高气温升至37℃以上,局部40℃以上,请市民注意防范。当日下午1时,在硚口区汉水桥街,18岁的王洪彤穿着长袖衣服和长裤,从家里推着自行车出门了。衣裤是武汉市第一职业教育中心的校服,那是王洪彤的母校。今年6月参加完高考后,她等待着录取通知书。  &n…

    创业分享 2023-05-13
    126
  • 一点资讯李亚:应届毕业生如何避免沦为一颗螺丝钉?

    在大学生创业热的浪头上,竟有人当头泼下冷水?此人正是一点资讯的CEO李亚。 在一点资讯2017校园招聘北京航空航天大学专场上,李亚在题为“选对一点,赢在起点”的演讲中建议道,创业和进入体系庞大的公司都不是应届学子最好的选择,如能进入一家正处于“青春期”的公司,借助公司平台学习历练,或许会成为快速独当一面的捷径。 以下为李亚演讲实录: 到正处于“青春期”的企业…

    创业分享 2023-05-28
    179
  • 上攻乏力下泄有力 创业板尾盘跳水收跌0.68%

      周边市场方面,截至收盘,东京日经255指报22551点,上涨0.12%;韩国首尔综指报2542点,上涨0.17%;台湾加权指数报10854点,下跌0.00%。   个股方面,红日药业、国新能源、杭州解百、宏达电子、盘龙药业等20余股涨停;汉王科技、德赛电池、一汽夏利、国科微、华大基因等跌幅居前。   截至收盘,沪指报3353.82点,涨1.90点,涨幅0…

    创业分享 2023-05-21
    75
  • 宿豫区陆集镇 创业青年回乡村振兴有了生力军

    “在外上过大学、见过世面的年轻人就是不一样,连非洲的项目产品都能引到家里来做。”宿迁市宿豫区陆集镇官庄村党群服务中心门前,一位路过的老大爷指着村部边一栋两层小楼房——“非洲妈妈指定合作基地”赞不绝口。 走进楼房内部,只见40多名工人正在忙碌,一堆简单材料在工人手里旋转翻飞,很快就变成了一件件极具非洲风情的杯垫、手包等成品。“这就是承载着我们陆集镇8名青年创业…

    创业分享 2023-05-17
    116
  • 上海虹口集中展示党建引领创业创新成果

    (光明融媒记者颜维琦) 虹口是海派文化的发源地,拥有独特的红色文化资源和深厚的红色文化底蕴,是上海“党的诞生地”的重要区域。虹口区的红色基因决定了虹口的创业创新工作和红色精神的传承及党建高地的引领一脉相承。从最早期的创业形式——非正规就业劳动组织到建立上海首个青年“网上创业基地”;从虹口区委、区政府在上海率先提出“抓创业促就业”的工作思路,在全市率先推出开业…

    2023-05-13
    96

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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