Optional

Optional

  

一、Optional概述

Optional是为了避免空指针异常,在jdk1.8,受谷歌的Guava项目引入了Optional类启发,引进了Optional类。

Option类是一个可以为null容器类,如果保存T,则表示这个值存在,如果仅仅保存null,则表示这个值不存在。

如果值存在 则isPresent()方法会返回true,调用get()方法会返回该对象。

  
使用场景:

比如Stream流中就存在许多返回值为Optional的方法。

  
  

二、创建Optional

方法:

Optional.of(T t) :创建一个 Optional 实例,t必须非空;

Optional.empty() :创建一个空的 Optional 实例

Optional.ofNullable(T t):t可以为null

  
示例:

public void method(){
    Optional<String> optional1 = Optional.of("string");
    Optional<Object> optional2 = Optional.empty();
    Optional<String> optional3 = Optional.ofNullable("string");
}

  
  

三、对象判断

方法:

boolean isPresent() :判断是否包含对象

void ifPresent(Consumer<? super T> consumer) :如果有值,就执行Consumer 接口的实现代码,并且该值会作为参数传给它。

  
示例:

boolean b = optional1.isPresent();

optional1.ifPresent((e) ->{
    System.out.println(e);
});

  
  

四、获取对象

方法:

T get(): 如果调用对象包含值,返回该值,否则抛异常 。

T orElse(T other) :如果有值则将其返回,否则返回指定的other对象。

T orElseGet(Supplier<? extends T> other) :如果有值则将其返回,否则返回由 Supplier接口实现提供的对象。

T orElseThrow(Supplier<? extends X> exceptionSupplier) :如果有值则将其返 回,否则抛出由Supplier接口实现提供的异常。

  
示例:

String s = optional1.get();
String s1 = optional1.orElse("string");

String s2 = optional1.orElseGet(() -> {
    return "string";
});

String s3 = optional1.orElseThrow(() -> {
    return new RuntimeException("null");
});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值