
Optional类
发布日期:2021-05-26 06:33:36
浏览次数:29
分类:精选文章
本文共 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)
: 输入可以是nullorElse(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来更安全地处理可能为空的对象,提高代码的健壮性和可读性。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月06日 10时34分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
工程经济—建设工程定额
2019-03-14
1Z204050、施工质量不合格的处理
2019-03-14
【字节网盘】九款超好看不同页面404源码
2019-03-14
两款404页面自动跳转源码html
2019-03-14
一款好看新颖的404页面源码
2019-03-14
MacOS 应对系统无响应的方法
2019-03-14
Mac隐藏辅助功能|自定义苹果Mac显示器
2019-03-14
ActivityNotFoundException异常错误
2019-03-14
git远程仓库切换
2019-03-14
学习Vue.js2.0(国外视频教程)
2019-03-15
ubuntu 16.04 镜像下载
2019-03-15
CUDA9.1、cuDNN7在Ubuntu16.04上的安装
2019-03-15
微信小程序云开发:怎么删除云函数?已解决
2019-03-15
PyCharm配置anaconda环境
2019-03-15
查找最小值栈的O(1)
2019-03-15
Java面试题整理,闭关在家37天“吃透”这份345页PDF,纯干货
2019-03-15
概念唱片Plastic Beach封面高清壁纸
2019-03-15
LINUX-WIFI无线接入的一些东西
2019-03-15