java中的optional类,Java中的Optional类

作用:解决空指针异常(NullPointerException)

如下代码:

String code =

user.getAddress().getCountry().getCode().toUpperCase()

复制代码

每一步都可能报NullPointerException

jdk8之前要判断每一步是否为null:

if (null != user) { Address address = user.getAddress(); if (null != address) { Country country = address.getCountry(); if (null != country) { String code = country.getCode(); if (null != code) { code.toUpperCase(); } } }}

复制代码

使用optional方法简化代码:

optional.map(User::getAddress).map(Address::getCountry) .map(Country::getCode).orElse("code");

复制代码

方法介绍

创建optional方法:

of 创建时,如果传值为null,则抛出异常

ofNullable 创建时,如果传值为null,则创建一个空的optional

例:Optional optional = Optional.OfNullable(user);

过滤方法:

filter:依条件过滤对象,其返回值为原始对象

Optional user = optional.filter(c -> c.getAge().equals(1));

map:过滤出的结果为null,不会抛出异常

Optional address = optional.map(User::getAddress);

flatMap:过滤出的结果为null,抛出异常

Optional country = address.map(Address::getCountry);

如果为null,设置默认值:

orElse:为null,则返回默认值

orElseGet:为null,则返回默认值

orElseThrow:为null,则抛出异常

判断是否有值:

isPresent:判断optional是否为null

取值:

get:获取optional中的对象

为null,则不调用:

isPresent:判断optional是否为null

public static void main(String[] args) {

User user = new User();

Optional optional = Optional.ofNullable(user);

optional.ifPresent(User::getAddress);

}

private static void print(Address address) {

System.out.println(address.getCountry());

}

空值:

empty:空值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值