public class Person {
private Car car;
public Car getCar ( ) { return car; }
public class Car {
private Insurance insurance;
public Insurance getInsurance ( ) { return insurance; }
}
public class Insurance {
private String name;
public String getName ( ) { return name; }
}
}
10.1 采用防御式检查减少 NullPointerException
public String getCarInsuranceName ( Person person) {
if ( person != null) {
Car car = person. getCar ( ) ;
if ( car != null) {
Insurance insurance = car. getInsurance ( ) ;
if ( insurance != null) {
return insurance. getName ( ) ;
}
}
}
return "Unknown" ;
}
public String getCarInsuranceName ( Person person) {
if ( person == null) {
return "Unknown" ;
}
Car car = person. getCar ( ) ;
if ( car == null) {
return "Unknown" ;
}
Insurance insurance = car. getInsurance ( ) ;
if ( insurance == null) {
return "Unknown" ;
}
return insurance. getName ( ) ;
}
10.2 创建Optional对象
10.2.1 声明一个空的Optional
Optional< Object> empty = Optional. empty ( ) ;
10.2.2 依据一个非空值创建Optional
Optional< Car> car = Optional. of ( new Car ( ) ) ;
10.2.3 可接受null的Optional允许null值的Optional
Optional< Car> car1 = Optional. ofNullable ( new Car ( ) ) ;
10.2.4 例子
String name = null;
Insurance insurance = new Insurance ( ) ;
if ( insurance != null) {
name = insurance. getName ( ) ;
}
Optional< Insurance> insurance1 = Optional. ofNullable ( insurance) ;
Optional< String> s = insurance1. map ( Insurance: : getName) ;
String s1 = s. get ( ) ;
Map map = new HashMap < > ( ) ;
Object key = map. get ( "key" ) ;
Optional< Object> key1 = Optional. ofNullable ( map. get ( "key" ) ) ;