一、基本工具
1.拒绝null值
有些时候null值会带来意想不到的后果,很多时候拒绝null会对开发者更有帮助。我在项目中有过真是感受,程序部署正式环境后,日志中抛出了NullPointerException,在开发阶段我就能捕获到此异常就可能避免了很多事故。但是很多时候Null确实也有合适和正确的使用场景,如在性能和速度方面Null是廉价的,而且在对象数组中,出现Null也是无法避免的。
Optional的使用:
代码 | 作用 | |||
Optional.of(T) | 创建指定引用的Optional实例,若引用为null则快速失败 | |||
Optional.absent() | 创建引用缺失的Optional实例 | |||
Optional.fromNullable(T) | 创建指定引用的Optional实例,若引用为null则表示缺失 | |||
boolean isPresent() | 如果Optional包含非null的引用(引用存在),返回true | |||
T get() | 返回Optional所包含的引用,若引用缺失,则抛出java.lang.IllegalStateException | |||
T or(T) | 返回Optional所包含的引用,若引用缺失,返回指定的值 | |||
T orNull() | 返回Optional所包含的引用,若引用缺失,返回null | |||
Set |
返回Optional所包含引用的单例不可变集,如果引用存在,返回一个只有单一元素的集合,如果引用缺失,返回一个空集合。 |
使用Optional除了赋予null语义,增加了可读性,最大的优点在于它是一种傻瓜式的防护。Optional迫使你积极思考引用缺失的情况,因为你必须显式地从Optional获取引用。
2.前置条件
方法(不包括额外参数) | 描述 | 检查失败时抛出的异常 | ||||
checkArgument(boolean) | 检查boolean是否为true,用来检查传递给方法的参数 | IllegalArgumentException | ||||
checkNotNull(T) | 检查value是否为null,该方法直接返回value,因此可以内嵌使用checkNotNull | NullPointerException | ||||
checkState(boolean) | 用来检查对象的某些状态 | IllegalStateException | ||||
checkElementIndex(int index, int size) | 检查index作为索引值对某个列表、字符串或数组是否有效。index>=0 && index<size | IndexOutOfBoundsException | ||||
checkPositionIndex(int index, int size) | 检查index作为位置值对某个列表、字符串或数组是否有效。index>=0 && index<=size | IndexOutOfBoundsException | ||||
checkPositionIndexes(int start, int end, int size) | 检查[start, end]表示的位置范围对某个列表、字符串或数组是否有效 | IndexOutOfBoundsException |
索引值常用来查找列表、字符串或数组中的元素,如List.get(int), String.charAt(int)
位置值和位置范围常用来截取列表、字符串或数组,如List.subList(int,int), String.substring(int)
3.常见object方法
4.排序
sosop hou 13 April 2015排序器[Ordering]是Guava流畅风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能。 链接参考:http://ifeve.com/google-guava-ordering/