package s19;
import java.util.Optional;
import java.util.function.Supplier;
public class OptionalDemo {
public static void main(String[] args) {
//Optional类,解决NullPointerException问题,常用于getter方法
Optional<String> o = getStatus(1);
//boolean isPresent()
if(o.isPresent()) //判断optional实例不为空
{
//T get(),获取实例中值
System.out.println(o.get()); //A
//T orElse(T other),Optional实例不为空返回A,否则返回B
System.out.println(o.orElse("B")); //A
//T orElseGet(Supplier<? extends T> other),Optional实例不为空返回A,否则返回C
System.out.println(o.orElseGet(new Supplier<String>() { //A
@Override
public String get() {
return "C";
}
}));
}
}
public static Optional<String> getStatus(int a){
switch (a){
//static <T> Optional<T> of(T value),返回非空Optional
case 1: return Optional.of("A");
//static <T> Optional<T> ofNullable(T value)
//传入null等价于static <T> Optional<T> empty()
//当传入non-null时等价于of
default: return Optional.ofNullable(null);
}
}
}
/*
static <T> Optional<T> empty() 创建空的Optional实例
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) 允许传入null
T orElse(T other) Optional非空返回Optional值,否则返回指定对象
T orElseGet(Supplier<? extends T> other) Optional非空返回Optional值,否则返回Supplier对象值
<X extends Throwable>
T orElseThrow(Supplier<? extends X> exceptionSupplier) Optional非空返回Optional值,否则抛出异常
String toString()
*/
java.util.Optional示例
于 2023-12-11 15:51:05 首次发布