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

相关推荐

  • “西安青年创业大讲坛曲江创客大街站”开讲

    三秦都市报——三秦网讯 (文/记者 赵丽莉 图/记者 马昭)4月14日下午,共青团西安市委、西安曲江新区管委会联合西安青年企业家协会共同启动了“西安青年创业大讲坛一曲江创客大街站”,并举办首期讲坛。4名“创业大咖”结合自身创业创新经验,现场为100余名青年创业者传授成功创业知识。 “西安青年创业大讲坛”由共青团市委、市青企协主办,联合有关区县开发区、和创业大…

    创业分享 2023-05-18
    6300
  • 河南:“创客”返乡有了创业导师

    9月12日,走进博爱县鸿昌街道办事处七方村,只见郁郁葱葱的竹林荡出层层碧波,赏心悦目的自然风光迎面扑来。“这是菌丝,过段时间就能长出竹松茸。”见到记者,正在竹林干活的王瑞彬弯腰抓起一把培养土,介绍起这种生长在竹林里的食用菌。 1980年出生的王瑞彬是一名退伍军人,返乡创业十几年一直围绕竹林做文章。“博爱竹林历史悠久,现在村民富了,竹林却荒了,太让人心疼了。”…

    创业分享 2023-05-12
    9300
  • 创新创业中的核心要素

    天使汇于2011年11月正式上线运营,是中国起步最早、规模最大、融资最快的天使合投平台。截至2016年6月底,天使汇平台注册创业项目53207个,通过审核并挂牌的项目6775个,其中,500多个创业项目完成融资,融资总额50多亿元人民币。滴滴打车等明星项目都是在天使汇完成初始融资。 天使汇创业团队在2010年9月份创办中国首家科技创业媒体“tech2ipo”…

    2023-05-28
    7400
  • 无经验也能开好内衣店 创业路上小资丽人内衣给你领路

      小资丽人内衣无论是产品的丰富度还是产品的品质,都是毋庸置疑的。被它所吸引的不仅仅只是女性消费者,还有大量投资商,不少创业者都看中了小资丽人内衣在市场上的优势所在,希望能够通过加盟的方式,共享小资丽人的品牌优势,在内衣行业里赚得一瓢金。   女人既想要照顾到家庭孩子,又想要经济独立,让自己变得美丽时尚,开小资丽人内衣店实在是最优之选。如果上班,自然没有自由…

    创业分享 2023-06-03
    5500
  • 创业热潮中如何成为行业独角兽 解密摩购空间优势

    3)整合知名品牌 解决供应链问题 1)紧抓消费升级 巨大市场优势 为了使商业模式符合市场变化,摩购空间与北京大学合作成立北京大学金融战略与商业创新课题组,研究世界创新商业模式,将会对摩购空间市场、模式、运营等板块进行全方位服务,为加盟者提供有效数据支持。 加盟摩购空间轻奢生活馆项目后,摩购空间将对创业者进行全程帮扶,包含选址、招聘、开业活动、推广引流等10余…

    创业分享 2023-05-12
    9300

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信