本系列基于官方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反射所提供的工具。