前言
Java中最常见的异常就是NullPointerException,空指针的出现不应该影响业务的正常执行,我们应该尽量避免,把异常控制在编码阶段,jdk8为我们提供了Optional,可以让我们更加灵活地处理空指针异常。
一、上代码
1. isPresent
isPresent判断值是否为空,返回布尔值,get方法获取值
public static void isPresent(Optional optional){
if(optional.isPresent()){
System.out.println(optional.get());
}
}
2. ifPresent
ifPresent和isPresent类似,它需要一个lamda表达式的参数,参数value就是get方法获取到的值
public static void ifPresent(Optional<String> optional){
optional.ifPresent(value -> {
System.out.println(value);
});
}
3. map
map处理完成后,返回Optional对象
public static void map(Optional<String> optional){
Optional<String> ret = optional.map(String::toUpperCase);
isPresent(ret);
}
4. orElse
orElse如果值存在则返回当前值,不存在则返回orElse方法接收到的参数,作用类似于三目表达式
public static void orElse(Optional<String> optional){
String value = optional.orElse("Default");
System.out.println(value);
}
5. orElseGet
orElseGet和orElse差不多,如果值存在则返回当前值,不存在则返回lamda表达式的返回值
public static void orElseGet(Optional<String> optional) {
String value = optional.orElseGet(() -> {
return "Default";
});
System.out.println(value);
}
6. orElseThrow
orElseThrow值存在则继续执行,值为空的时候则抛出异常
public static void orElseThrow(Optional<String> optional) {
optional.orElseThrow(NullPointerException::new);
ifPresent(optional);
}
7. optional
Optional构造方法是私有的,内部提供了三个方法返回Optional对象
public static void optional() {
// 返回一个空的Optional类型;
Optional.empty();
// 使用这个方法,值不可以为空,否则抛NullPointerException
Optional.of("value");
// 使用这个方法,值可以为空,如果为空返回Optional.empty
Optional.ofNullable(null);
}