目的:为了解决一个方法返回的参数可能为空而无法传入到新的方法做参数的问题,java8产生了新的内容:Option。
定义:Option是一个可以为空的容器对象(注意本质上是个万能对象)。
常用方法:1、ispresent():如果值存在的话就调用ispresent()返回true。
2、get():如果值存在的话就调用get()返回这个值。
3、of(value):为非null值创建一个Option,(如果传入null,就报空指针异常)
4、empty():用来返回一个空对象,该对象调用ispresent()方法返回false,调用get报错,no value present
5、ofNullable():为指定的值创造个Option,如果值为空则返回一个空Option。
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
6、orElse:如果有值就将其返回,没有值的话返回其他指定值
public T orElse(T other){
return value!=null?value:other;
}
7、orElseGet():作用同orElse()方法,但是,orElse()方法的参数是指定一个字符串,而orElseGet()方法的参数是一个接口,可以从接口取得指定值。
User user = Optional.ofNullable(User.getById(userId)).orElseGet(() -> User.createUser(userId));
上面这一句用来生成一个User对象,项目中,前端会传来一个userid,如果该userid存在,就直接返回该User对象(调用的是dao层的getById方法),如果不存在这个userid则调用方法创建一个新的User对象。类似于三目运算符,但是是用在Option上的。