Optional使用说明

java8 Optional类使用示例

NP exception是所有程序员的梦魇,为此你不得不去判断各种null的情况,是不是代码看起来很low,没关系,Optional 能让你的代码看起来高大上。

以下是所有jdk1.8中列出的所有方法:

static <T> Optional<T>  empty()

boolean     equals(Object obj)

Optional<T>     filter(Predicate<? super T> predicate)

<U> Optional<U>     flatMap(Function<? super T,Optional<U>> mapper)

T   get()

int     hashCode()

void    ifPresent(Consumer<? super T> consumer)

boolean     isPresent()

<U> Optional<U>     map(Function<? super T,? extends U> mapper)

static <T> Optional<T>  of(T value)

static <T> Optional<T>  ofNullable(T value)

T   orElse(T other)

T   orElseGet(Supplier<? extends T> other)

T   orElseThrow(Supplier<? extends X> exceptionSupplier)
<X extends Throwable>
T   orElseThrow(Supplier<? extends X> exceptionSupplier)
String  toString()

以上的每个方法的用法在以下代码中有明确说明及代码示例。

import java.util.Optional;
import java.util.function.Predicate;

/**
 * Created by LHL on 2016/12/15.
 */
public class Demo01 {

public static void main(String[] args) {

//empty() 返回一个空的Optional
Optional empty = Optional.empty();
System.out.println(empty.isPresent());

   //of 发回指定值的Optional ,指定的不可以为空,否则NullPointerException
//Optional of = Optional.of(null);//注意:NullPointerException
Optional of1 = Optional.of("of");
System.out.println(of1.get());

//ofNullable 可以说是of方法升级版,可以为空,也可以不为空
Optional<String> optional = Optional.ofNullable("ofnullabel");
System.out.println(optional.get());

//get 从optional中取值,如果存在,则返回取到的值,否则NoSuchElementException

//isPresent optional存在值返回true,否则false
System.out.println(empty.isPresent());
System.out.println(of1.isPresent());

//ifPresent 故名思议,如果有值,值调用consumer,否则,不做任何操作,consumer 不做具体讲解
of1.ifPresent((a)-> System.out.println("=========>"+a));

//filter  把optional按照传入的限定条件进行过滤,如果有满足该条件的返回optional,否则返回空的optional
Predicate<String> predicate = s -> s.startsWith("o");
System.out.println(of1.filter(predicate).isPresent());//以o开头

//orElse如果有值,则将其放回,没有返回指定的值
System.out.println(empty.orElse("没有值,快把我返回吧"));

//orElseGet 和orElse功能差不多,但是接口的是一个Supplier
System.out.println(empty.orElseGet(()->"就把我返回吧"));

}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值