什么是Optional
?
我们看一个例子
/**
* `Optional`测试
*
* @author: Mock
* @date: 2023-05-28 20:49:09
*/
public class OptionalTest {
public static void main(String[] args) {
String str1 = null;
//1、不使用`Optional`
if(str1 == null){
str2 = "str1 是 null";
}else{
str2 = str1;
}
//2、使用`Optional`
str2 = Optional.ofNullable(str1).orElse("str1 是 null");
}
}
从上面的例子是否看出来了,Optional
大大减少了代码行数
介绍下几种常用的方法
三种构造方法
1、Optional.of(obj)
创建一个 Optional 实例,当t为null时抛出异常
Optional optional = Optional.of(str1);
2、Optional.ofNullable(obj)
创建一个 Optional 实例,但当 t为null时不会抛出异常,而是返回一个空的实例
Optional optional = Optional.ofNullable(str1);
3、Optional.empty(obj)
创建一个空的 Optional 实例
Optional optional = Optional.empty();
获取对象
get(): 获取optional实例中的对象,当optional 容器为空时报错
Optional optional = Optional.of(str1);
Object obj = optional.get();
orElseGet(Supplier other):如果optional不为空,则返回optional中的对象;如果为null,则使用Supplier函数生成默认值other
Object obj = optional.orElseGet(() -> str1);
isPresent()
判断对象是否存在
if(optional.isPresent()){
//do something
}