Optional类旨在解决NullPointException问题。 Java 8 doc
1. 创建空Optional类
Optional<Staff> empty = Optional.empty();
2. 简单应用
2.1 准备的类
public class Staff {
String name;
Integer age;
Department department;
public Staff(){
}
public Staff(String name, Integer age){
this.name = name;
this.age = age;
}
... //getter setter
}
public class Department {
String name;
public Department(){
}
public Department(String name){
this.name=name;
}
... //getter setter
}
2.2 取默认值、单级判断
@Test
void optionalTest(){
System.out.println("--------------------------Default Value-----------------------");
Staff staff = null;
Staff staffOptional = Optional.ofNullable(staff).orElse(new Staff("Jerome",12));
System.out.println(staffOptional);
System.out.println("------------------------Single Level-------------------------");
String staffName = Optional.ofNullable(staff).map(s -> s.getName()).orElseGet(() -> "Anonymity");
System.out.println(staffName);
}
显示结果
--------------------------Default Value-----------------------
*$Staff@61dd025
------------------------Single Level-------------------------
Anonymity
2.3 多级判断
@Test
void optionalTest(){
System.out.println("--------------------------Default Value-----------------------");
Staff staff = null;
Staff staffOptional = Optional.ofNullable(staff).orElse(new Staff("Jerome",12));
System.out.println(staffOptional);
System.out.println("-------------------------Multi Level------------------------");
Department department = new Department("IT");
staffOptional.setDepartment(department);
staffName = Optional.ofNullable(staffOptional).map(s -> s.getDepartment()).map(d-> d.getName()).orElse("Anonymity");
System.out.println(staffName);
}
显示结果
--------------------------Default Value-----------------------
com.sevnight.zeus.myths.ZeusMythsApplicationTests$Staff@61dd025
-------------------------Multi Level------------------------
IT
本文深入探讨了Java8中Optional类的使用,旨在解决NullPointException问题,通过具体示例展示了如何创建空Optional实例,以及如何使用orElse和map方法进行默认值设定和多级判断。
1006

被折叠的 条评论
为什么被折叠?



