阿里規範推薦使用
java8的Optional中,上面兩個方法是最長用的
1.ofNullable(T) 意思就是可以爲空的範型
2.of(T) 值不能爲空,否則會拋出NullPointerException
使用
public class Test {
public static void main(String[] args) {
User u1 = null;
User u2 = new User("111", "yuan");
System.out.println(print(u1));
System.out.println(print(u2));
}
private static String print(User user) {
return Optional.ofNullable(user).map(User::toString).orElse("");
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private String id;
private String name;
}
輸出
User(id=111, name=yuan)
示例2
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Employee {
private String name;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Company {
private String name;
private List<Employee> employees;
}
public class OptionalTest2 {
public static void main(String[] args) {
Employee employee1 = new Employee("zhangsan");
Employee employee2 = new Employee("lisi");
Company company = new Company("company1", Arrays.asList(employee1, employee2));
// company.setEmployees(null);
// 取出Company中的Employee列表,如果有,那麼返回該Employee列表;
// 如果沒有,那麼返回一個空的Employee列表。
Optional<Company> optional = Optional.ofNullable(company);
List<Employee> result =
optional.map(Company::getEmployees)
.orElse(Collections.emptyList());
result.forEach(employee -> System.out.println(employee.getName()));
}
}
結果
zhangsan
lisi