java optional详解_java8 Optional类详解

Optional

java8中引入一个新的类java.util.Optional。这是一个包装引用类型的一个类。java8之前调用方法的时候当我们不知道返回值是否可能为null的时候,我们要对每个结果使用前进行null检查,如果不慎对null引用进行调用就会抛出NullPointerException异常。现在我们可以通过Optional.empty()返回一个空的Optional对象,它返回一个特定的单一实例。这样对Optional.empty()的操作也防止NullPointerException异常产生。

使用Optional一个重要原因就是,例如当我们声明一个Optional类型的时候表示这个Car变量是可以缺失的。当我们声明一个Car的时候表示这个Car是不能缺失的。这样就对数据的可能行清晰的理解,丰富的数据模型的语义。

Optional对象创建

1.声明一个空的Optional

Optional optCar = Optional.empty();

2依据一个非空值创建Optional

Optional optCar = Optional.of(car);

如果car是一个null会立即抛出一个NullPointerException,而不是等你试图访问car的属性是才返回一个错误。

3可接受null的Optional

Optional optCar = Optional.ofNullable(car);

Optional对象获取

使用map从Optional对象中提取和转换值。

使用flatMap链接Optional对象

例:

public class OptionalTest {

public static void main(String[] args) {

Optional p = getP();

Optional panme = p.map(pe -> pe.getName());

Optional carname = p.flatMap(pp -> pp.getCar()).flatMap(car -> car.getName());

}

public static Optional getP() {

return Optional.ofNullable(null);

}

}

class Persion {

private Optional car;

private String name;

public Optional getCar() {

return car;

}

public void setCar(Optional car) {

this.car = car;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

class Car {

private Optional name;

public Optional getName() {

return name;

}

public void setName(Optional name) {

this.name = name;

}

}

读取Optional中实例变量的值

Optional类提供了多种方法

get()是方法中简单但又是最不安全的方法。如果变量存在则返回封装的变量值,否则抛出NoSuchElementException。

OrElse(T other)允许在Optional对象在不含值的时候提供一个默认值。

isPresent()可以判定Optional封装的变量是否存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值