它是Java 8 之后推出来的一个可以为null的容器对象
作用就是用来避免空指针异常(NullPointerException)
话不多说,直接来看简单的实用方法
Optional类的常用方法
isPresent():判断是否包含值,包含值返回true,不包含值返回false
get():如果Optional有值则将其返回,否则抛出NOSuchElementException
orElse(T t):如果调用对象包含值,返回该值,否则返回参数t
orElseGet(supplier s):如果调用对象包含值,返回该值,否则返回s获取的值
map(Function f):如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()
常用的一般if判空方法:
public class OptionalTest {
public static void main(String[] args) {
//创建对象
Student student = new Student("Dear Zero Two",19,100);
//if方法
if (student.getName()!=null){
System.out.println("Student's name:"+student.getName());
}
}
}
下面来看看optional用法
public class OptionalTest {
public static void main(String[] args) {
//创建对象
Student student = new Student("Dear Zero Two",19,100);
//optional用法
//将student放到Optional容器中,返回一个optionalStudent对象
Optional<Student> optionalStudent = Optional.ofNullable(student);
//map -> 接收Function -> 实现apply方法 -> 拿到name值
optionalStudent.map(new Function<Student, String>() {
@Override
public String apply(Student student) {
return student.getName();
}
});
}
}
之后进一步简化,可使用快捷键alt+enter转化成lambda表达式
//isPresent -> 接收consumer -> 实现accept方法 ->输出name值
optionalStudent.map(student1 -> student1.getName()).ifPresent(new Consumer<String>() {
@Override
public void accept(String s) {
}
});
如上操作进一步简化
optionalStudent.map(student1 -> student1.getName()).ifPresent(s -> {
System.out.println(s);
});
最终简化代码:
optionalStudent.map(Student::getName).ifPresent(System.out::println);
控制台打印结果:
以上就是我对这个optional的这个分享,希望对大家有用
自我感觉就是可以让代码更优雅一些。。。