[Guava源码日报(1)]Guava类库简介

时间:2021-03-07 20:47:26

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 反射机制工具类。