null的主要問題是語義含糊,例如:map.get(key)返回null時,你沒法判斷是map==null仍是key==null。
因爲這個緣由對於null值建議採起快速失敗。同時,在程序中咱們可使用Optional,使用Optional除了賦予null語義,增長了可讀性,最大的優勢在於它是一種傻瓜式的防禦。Optional迫使你積極思考引用缺失的狀況,由於你必須顯式地從Optional獲取引用。
| 方法 | 做用 | | Optional.of(T) | 建立指定引用的Optional實例,若引用爲null則快速失敗 | | Optional.absent() | 建立引用缺失的Optional實例 | | Optional.fromNullable(T) | 建立指定引用的Optional實例,若引用爲null則表示缺失 | | boolean isPresent() | 若是Optional包含非null的引用(引用存在),返回true | | T get() | 返回Optional所包含的引用,若引用缺失,拋異常 | | T or(T) | 返回Optional所包含的引用,若引用缺失,返回指定的值 | | T orNull() | 返回Optional所包含的引用,若引用缺失,返回null | | Set<T> asSet() | |
建議:在程序中將null和empty區分開, 以表示不一樣的含義。html
maven依賴:git
<dependency>maven
<groupId>com.google.guava</groupId>google
<artifactId>guava</artifactId>spa
<version>19.0</version>code
</dependency>htm