本系列基于官方wiki进行翻译,个别地方的阐述会加入个人的理解,不对的地方,欢迎指正。
用户手册
Guava项目包含了诸多的在我们基于Java的项目所依赖的Google核心库,包括了:集合(collections)、缓存(caching)、原生的类型支持(primitives support)、并发类库(concurrency libraries)、通用注解(common annotations)、字符串处理(string processing)、输入/输出(I/O),等等。每一个工具都在真正地被Google的开发者们每天地运用在生产环境当中,为用户提供服务。
然而,查阅Javadoc对于学习如何使用一个类库来说,并不总是最高效的方式。因此,在这里,我们尝试为Guava的一些最流行的和最强大的特色功能,提供一种可读的和愉快的阐述。
Guava包含的内容
- 基础工具:更加愉快地使用Java语言
- 使用和避免null:
null
是模棱两可的,可能引起令人困惑的错误,有时也仅仅是字面上的令人不悦。很多Guava工具都拒绝null,并且在对null值进行快速失败的处理,而不是盲目地接受它。 - 前置条件:为你的方法提供前置条件,使测试更加容易。
- 通用对象方法:简单地实现
Object
中的方法,比如hashCode()
和toString()
。 - 排序:Guava强大的“流式比较器(Fluent Comparator)”类。
- Throwables:简化异常和错误的传播和检查。
- 使用和避免null:
- 集合:Guava为JDK集合生态系统提供的扩展。这些是Guava中最成熟和最流行的部分。
- 不可变集合:为了防御式编程,常量集合,提高效率。
- 新集合类型:为了应对JDK集合应对不了的那些使用场景:multisets、multimaps、tables、bidirectional maps,等等。
- 强大的集合工具:为了补充
java.util.Collections
中没有提供的常用操作。 - 扩展工具:需要写一个Collection装饰器实现Iterator接口吗?我们可以使它变得更简单。
- 缓存:本地缓存,支持各种各样的过期策略。
- 函数式风格:请尽可能少的使用它,Guava的函数式风格可以显著地简化代码。
- 并发:强大并且简单的抽象,使得编写正确的并发代码变得更容易。
- ListenableFuture:一个在完成以后可以回调的Future
- Service:一个可以启动,停止的东西。其中已经为你搞定了复杂的状态逻辑。
- 字符串:一些非常有用的字符串工具:splitting、joining、padding,等等。
- 原生类型:对原生类型(比如
int
和char
)的一些JDK没有提供的操作(包括一些类型的无符号形式)。 - 区间:Guava的强大API,为处理在Comparable类型上的区间问题,包括连续的和离散的。
- I/O:简化I/O操作,尤其是对于Java 5和Java 6,在整个流和文件上的操作。
- 哈希:这是比
Object.hashCode()
提供的更复杂的散列算法,包括Bloom过滤器。 - 事件总线:在组建之间的
发布-订阅
风格的通信,不需要组件具体指定被注册的组件。 - Math:优化的,并且被彻底测试过的,而JDK没有提供的Math工具。
- 反射:Guava为Java反射所提供的工具。
网友评论