博客
关于我
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/

你可能感兴趣的文章
OpenResty(3):OpenResty快速入门之安装lua
查看>>
OpenResty(4):OpenResty快速入门
查看>>
OpenResty(5):Openresty 模板渲染
查看>>
openshift搭建Istio企业级实战
查看>>
OpenSLL
查看>>
OpenSSL 引入了新的治理模式和项目,来增强社区参与和决策
查看>>
openssl安装
查看>>
OpenStack 上部署 Kubernetes 方案对比
查看>>
Openstack 之 网络设置静态IP地址
查看>>
OpenStack 存储服务详解
查看>>
OpenStack 搭建私有云主机实战(附OpenStack实验环境)
查看>>
OpenStack 综合服务详解
查看>>
OpenStack 网络服务Neutron详解
查看>>
Openstack 网络管理企业级实战
查看>>
Openstack(两控制节点+四计算节点)-1
查看>>
openstack--memecache
查看>>
openstack-keystone安装权限报错问题
查看>>
openstack【Kilo】汇总:包括20英文文档、各个组件新增功能及Kilo版部署
查看>>
openstack下service和endpoint
查看>>
Openstack企业级云计算实战第二、三期培训即将开始
查看>>