博客
关于我
Optional类
阅读量:772 次
发布时间:2019-03-23

本文共 1838 字,大约阅读时间需要 6 分钟。

Java Optional类核心教程

Java Optional类概述

PortableNSObject Java的Optional类被设计用于处理那些可以为空的对象,而不用担心空指针异常。它的设计理念类似于"Maybe"或"Optional"概念,在很多编程语言中都能找到对应的实现。

女孩类的结构简单明了,只有一个属性name。

package com.atguigu.java4;public class Girl {    private String name;    //其他方法...}

男孩类与女孩类有一定的关联关系,通过setGirl和getGirl方法实现对应关系.

package com.atguigu.java4;public class Boy {    private Girl girl;    //其他方法...}

Optional类方法解析

Optional类主要提供了以下几种方法:

  • of(T t): 创建一个Optional实例,输入必须非空
  • empty(): 创建一个空的Optional实例
  • ofNullable(T t): 输入可以是null
  • orElse(T t1): 如果当前Optional不为空,则返回内部对象;否则返回t1

OptionalTest测试案例

以下是使用Optional类的几个典型示例:

测试1

@Testpublic void test1() {    Girl girl = new Girl();    Optional Gögirl = Optional.of(girl);}

测试2

@Testpublic void test2() {    Girl girl = new Girl();    Optional Gögirl = Optional.ofNullable(girl);    System.out.println(Gögirl);        Girl girl1 = Ögirl.orElse(new Girl("赵丽颖"));    System.out.println(girl1);}

完善后的getGirlName方法

public String getGirlName(Boy boy) {    if (boy != null) {        Girl girl = boy.getGirl();        if (girl != null) {            return girl.getName();        }    }    return null;}

测试优化版本

@Testpublic void test4() {    Boy boy = null;    String girlName = getGirlName1(boy);    System.out.println(girlName);}

第二种实现方法

public String getGirlName2(Boy boy) {    Optional Boy boyOptional = Optional.ofNullable(boy);    Boy boy1 = boyOptional.orElse(new Boy(new Girl("迪丽热巴")));        Girl girl = boy1.getGirl();    Optional Girl girlOptional = Optional.ofNullable(girl);    Girl girl1 = girlOptional.orElse(new Girl("古力娜扎"));    return girl1.getName();}

最终测试案例

@Testpublic void test5() {    Boy boy = null;    boy = new Boy(new Girl("苍老师"));    String girlName = getGirlName2(boy);    System.out.println(girlName);}

总结

通过以上案例可以看出,Java Optional类的设计极大地简化了代码编写和理解,同时有效避免了空指针异常的问题。在实际开发中,可以通过Optional来更安全地处理可能为空的对象,提高代码的健壮性和可读性。

转载地址:http://bgtzk.baihongyu.com/

你可能感兴趣的文章
Python中使用PIL快速实现灰度图
查看>>
Python中使用pip install ncmbot时各种错误解决办法
查看>>
Python中使用requests和parsel爬取喜马拉雅电台音频
查看>>
Python中使用turtle绘制多个同心圆
查看>>
Python中使用turtle绘制棋盘详解
查看>>
Python中使用wordcloud生成漂亮的中文词云
查看>>
Python中使用wxpy定时机器人给微信好友发送每日一文
查看>>
Python中使用zip()并行迭代
查看>>
Python中使用推导式创建序列
查看>>
Python中信号处理程序和atexit处理程序的调用
查看>>
Python中关于txt的简单读写模式与操作
查看>>
Python中关于类和函数的初体验之"__init__"和"__str__"不是"_init_"和"_str_"
查看>>
python中函数接受参数为*args, **kwargs怎么办
查看>>
Python中切片的高效迭代
查看>>
python中列表乘法、eval、lambda、hasattr、assert、*(星)等的用法
查看>>
Python中制作词云的WordCloud参数详解
查看>>
Python中可用和使用的系统内存?
查看>>
python中存根文件(.pyi)的用途是什么?
查看>>
Python中实现ASCII码与字符相互转换
查看>>
Python中实现获取所有微信好友的头像并拼接成一张图片
查看>>