背景
Optional是一个容器,用来管理一个对象。主要是用来解决null和NullPointerException问题。
Java7 -> Java8 Optional是如何简化你的代码
假设有一个Student类
@Data
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
}
举例一
//java7
private String getJava7UpperCaseStudentName(Student student) {
if (student != null) {
String name = student.getName();
if (name != null) {
return name.toUpperCase();
}
}
return null;
}
//java8
private String getJava8UpperCaseStudentName(Student student) {
return Optional.ofNullable(student).map(Student::getName).map(String::toUpperCase).orElse(null);
}
举例二
@Test
public void testOptionalOrElse() {
Student origin = null;
Student defaultStudent = new Student("default", -1);
//java7
Student java7Student = origin != null ? origin : defaultStudent;
//java8
Student java8Student = Optional.ofNullable(origin).orElse(defaultStudent);
System.out.println("java7Student : " + java7Student);
System