【备忘录】关于Java的Optional
首先
关于Optional,我将以我自己的理解写下备忘录。
“Optional” 在中文中是什么意思?
一种用来封装值并表达该值可能为null的类,可以防止NullPointerException。
使用可选项的原因
调用可能为null的方法时,需要事先实施检查是否为null。
然而,有可能忘记实施检查。
为了防止遗忘实施,可以使用Optional。
请通过源代码确认
使用ofNullable方法,创建Optional类型的对象。
在if语句中使用isPresent函数,仅当值存在时才执行length方法。
此时,由于变量str的值为null,因此不会在控制台上显示任何内容。
String str=null;
Optional<String>strOpt=Optional.ofNullable(str);
if(strOpt.isPresent()) {
String message=strOpt.get();
System.out.println(message.length());
}
不使用if语句进行Null检查的方法还可以使用Lambda表达式来编写如下。
strOpt.ifPresent(v->System.out.println(v.length()));
如果作为值接受的情况
使用map函数。
map方法的返回值是包装了lambda表达式返回值的Optional。(在这种情况下,返回的是Integer类型的Optional)
如果strOpt的值不存在,则会返回没有值的Optional对象。
Optional<String>strOpt=Optional.ofNullable(str);
Optional<Integer>lengthOpt=strOpt.map(v->v.length());