Optional
Optional
1. 概述
大量的业务代码中有很多关于非空的判断,显得代码臃肿不堪,且程序员经常忘记这一操作。使用Optional可以避免空指针异常。并且很多函数式编程的API中也用到了Optional。
2. 封装和消费
package org.example;
import java.util.*;
public class Main {
public static void main(String[] args) {
Optional<User> userOptional = User.getUserOptional();// 获取Optional封装的User
userOptional.ifPresent(user -> System.out.println(user.age));// 消费(如果User是Null 不会执行)
}
}
class User {
public User(int age, List<String> name) {
this.age = age;
this.name = name;
}
public int age;
public List<String> name;
public static Optional<User> getUserOptional(){
List<String> list = new ArrayList<>();
list.add("张三");
list.add("mike");
User user = new User(1, list);
return Optional.ofNullable(user);// 封装User到Optional里
}
}
3.获取值
3.1 orElseGet
User user = optional.orElseGet(() -> new User());
安全的获取值 如果option里的值是null 那么就会new User()来返回
3.2 orElseThrow
User user1 = optional.orElseThrow((Supplier<Throwable>) () -> new RuntimeException("null"));
安全的获取值 如果option里的值是null 那么就会抛出异常
4.数据类型转换
map方法对数据类型转换

浙公网安备 33010602011771号