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