您的位置:首页 > 编程语言 > Java开发

Java Optional

2017-04-21 10:20 85 查看
【说明】

Optional类,由值是否为null或not null而处理不同。

Optional对象的值为null时,返回empty对象。

Optional类的主要方法
方法名说明
static <T> Optional<T> empty()返回空的Optional实例。这个Optional里没有值。
static <T> Optional<T> of (T value)返回包含由该参数指定非null值的Optional。
T get()如果存在值,则返回该值。否则抛出NoSuchElementException异常。
boolean isPresent()如果存在值,则返回true。否则返回false。
void ifPresent(Consumer<? super T> consumer)如果该值存在,则由指定的Consumer调用该值,否则不会做任何事情
T orElse(T other)如果存在值,则返回该值。否则返回false。
T orElseGet(Supplier<? extends T> other)如果存在值,则返回该值。否则调用Supplier,返回调用结果。
<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throw X entends Throwable如果存在值,则返回该值。否则抛出调用Supplier做成的异常。
OptionalSample1.java

import java.util.Optional;
import java.util.stream.Stream;

public class OptionalSample1 {

public static void main(String[] args) {

Optional<Integer> op1 = Optional.of(10);
Optional<Integer> op2 = Optional.empty();
System.out.println(op1.get());
System.out.println(op1.isPresent());
System.out.println(op2.isPresent());

Stream<Double> stream = Stream.empty();
Optional<Double> result = stream.findFirst();

System.out.println(result.orElse(0.0));
System.out.println(result.orElseGet(() -> Math.random()));
System.out.println(result.orElseThrow(IllegalArgumentException::new));
}
}

输出:
10

true

false

0.0

0.5137508511584216
Exception in thread "main" java.lang.IllegalArgumentException
at java.util.Optional.orElseThrow(Optional.java:290)
at OptionalSample1.main(OptionalSample1.java:20)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Optional java