Guava的使用

一、基本工具
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 asSet()   返回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.排序

排序器[Ordering]是Guava流畅风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能。 链接参考:http://ifeve.com/google-guava-ordering/

5.Throwables(简化异常和错误的传播与检查)

sosop hou 13 April 2015
blog comments powered by Disqus