Optional是JDK1.8新增的类,在JDK1.8之前一般某个函数应该返回非空对象,但是偶尔会返回null,在JDK1.8中,不推荐直接返回该对象,返回之前需要进行处理;
☞ 关键:Optional.ofNullable(s).get()
- 一般情况
☞ 由于对象元素没有初始化,运行会直接在s.getName处报空指针异常,但是究竟是哪一个deal造成的空指针异常?
public class Main{
public static void main(String[] args) {
Student s = new Student();
s = deal1(s);
s = deal2(s);
s = deal2(s);
String name = s.getName();
System.out.println(name);
}
public static Student deal1(Student s){
s = null;
return s;
}
public static Student deal2(Student s){
s = null;
return s;
}
public static Student deal3(Student s){
s = null;
return s;
}
}
- Optional优化
import java.util.Optional;
public class Main{
public static void main(String[] args) {
Student s = new Student();
s = deal1(s);
s = deal2(s);
s = deal2(s);
String name = s.getName();
System.out.println(name);
}
public static Student deal1(Student s){
s = null;
return Optional.ofNullable(s).get();
}
public static Student deal2(Student s){
s = null;
return Optional.ofNullable(s).get();
}
public static Student deal3(Student s){
s = null;
return Optional.ofNullable(s).get();
}
}