1. 简介
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等。这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。
2. 官方信息
官方首页:http://code.google.com/p/guava-libraries
官方下载:http://code.google.com/p/guava-libraries/downloads/list
官方文档:http://docs.guava-libraries.googlecode.com/git/javadoc
http://www.ostools.net/apidocs/apidoc?api=guava
3. 类包说明
类包 | 描述 |
com.google.common.annotations | 普通注解类型 |
com.google.common.base | 基本工具类库和接口 |
com.google.common.cache | 缓存工具包,非常简单易用且功能强大的JVM内缓存 |
com.google.common.collect | 带泛型的集合接口扩展和实现,以及工具类 |
com.google.common.eventbus | 发布订阅风格的事件总线 |
com.google.common.hash | 哈希工具包 |
com.google.common.io | I/O工具包 |
com.google.common.math | 原始算术类型和超大数的运算工具包 |
com.google.common.net | 网络工具包 |
com.google.common.primitives | 八种原始类型和无符号类型的静态工具包 |
com.google.common.reflect | 反射工具包 |
com.google.common.util.concurrent | 多线程工具包 |
4. 类库使用手册
4.1 base 基本工具类库和接口
看一下base给我们带来的什么样的改变:
-
使用和避免 null
null 有语言歧义, 会产生令人费解的错误。而Guava 的工具类在面对 null 时则会直接拒绝或出错,而不是默默地接受他们。
-
前提条件
更容易的对你的方法进行前提条件的测试。
-
常见的对象方法
简化了Object常用方法的实现, 如 hashCode() 和 toString()。
-
排序
Guava 强大的 "fluent Comparator"比较器, 提供多关键字排序。
-
Throwable类
简化了异常检查和错误传播。
基于以上,我们在阅读Guava的base类包内容时应该更着重观察以上几个方面。
4.2 collection 集合类
集合类库是 Guava 对 JDK 集合类的扩展, 这是 Guava 项目最完善和为人所知的部分。
-
Immutable collections(不变的集合)
防御性编程, 不可修改的集合,并且提高了效率。
-
New collection types(新集合类型)
JDK collections 没有的一些集合类型,主要有:multisets,multimaps,tables, bidirectional maps等等
-
Powerful collection utilities(强大的集合工具类)
java.util.Collections 中未包含的常用操作工具类
-
Extension utilities(扩展工具类)
给 Collection 对象添加一个装饰器,实现迭代器。
4.3 cache 缓存
本地缓存,可以很方便的操作缓存对象,并且支持各种缓存失效行为模式。
4.4 Functional idioms 函数式编程
简洁, Guava实现了Java的函数式编程,可以显著简化代码。
4.5 Concurrency 并发操作类
强大,简单的抽象,让我们更容易实现简单正确的并发性代码。
4.6 Strings 字符串工具类
一个非常非常有用的字符串工具类: 提供 splitting,joining, padding 等操作。
4.7 Primitives 类型
扩展 JDK 中未提供的对原生类型(如int、char等)的操作, 包括某些类型的无符号的变量。
4.8 Ranges
Guava 一个强大的 API,提供 Comparable 类型的范围处理, 包括连续和离散的情况。
4.9 I/O
简化 I/O 操作, 特别是对 I/O 流和文件的操作, for Java 5 and 6.
4.10 Hashing
提供比 Object.hashCode() 更复杂的 hash 方法, 提供 Bloom filters.
4.11 EventBus
基于发布-订阅模式的组件通信,但是不需要明确地注册在委托对象中。
4.12 Math
优化的 math 工具类,经过完整测试。
4.13 Reflection
Guava 的 Java 反射机制工具类。