博客
关于我
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可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
查看>>
python可维护性_使用这7大神器,让你的Python 代码更容易于维护
查看>>
python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
查看>>
Python变量命名方法-ChatGPT4o作答
查看>>
Python变量与运算符
查看>>
python单元测试之unittest
查看>>
Python单元测试unittest实战
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
查看>>
Python加速运行技巧
查看>>
python办公自动化基础遍历文件夹
查看>>
python办公自动化基础输出文件和文件夹
查看>>
python办公自动化基础搜索文件
查看>>
python前端之css
查看>>
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>