使用Optional
來檢查物件是否為null,若為null則丟出例外。
用來做為參數的Department
類別
Department.java
class Department {
private String departmentName;
private List<Employee> employeeList;
public Department(String departmentName, List<Employee> employeeList) {
super();
this.departmentName = departmentName;
this.employeeList = employeeList;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public List<Employee> getEmployeeList() {
return employeeList;
}
public void setEmployeeList(List<Employee> employeeList) {
this.employeeList = employeeList;
}
}
Employee.java
class Employee {
private String name;
public Employee(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
下面的方法傳入Department
物件,並中取得所有Employee
的名字。
public class Main {
public static void main(String[] args) throws Exception {
Employee employee1 = new Employee("Alice");
Employee employee2 = new Employee("Mike");
Department department = new Department("IT", Arrays.asList(employee1, employee2));
List<String> employeeNameList = getEmployeeNameList(department);
employeeNameList.forEach(System.out::println);
}
public static List<String> getEmployeeNameList(Department department) throws Exception {
List<Employee> employeeList = Optional.ofNullable(department)
.orElseThrow(() -> new Exception("department is null"))
.getEmployeeList();
return Optional.ofNullable(employeeList)
.orElse(new ArrayList<>())
.stream()
.filter(e -> e.getName() != null && e.getName().length() > 0)
.map(e -> e.getName()).collect(Collectors.toList());
}
}
參考:
沒有留言:
張貼留言