本系列基于官方wiki進行翻譯入愧,個別地方的闡述會加入個人的理解带族,不對的地方拗窃,歡迎指正脆侮。
用戶手冊
Guava項目包含了諸多的在我們基于Java的項目所依賴的Google核心庫锌畸,包括了:集合(collections)、緩存(caching)靖避、原生的類型支持(primitives support)潭枣、并發(fā)類庫(concurrency libraries)、通用注解(common annotations)筋蓖、字符串處理(string processing)卸耘、輸入/輸出(I/O),等等粘咖。每一個工具都在真正地被Google的開發(fā)者們每天地運用在生產(chǎn)環(huán)境當中蚣抗,為用戶提供服務(wù)。
然而瓮下,查閱Javadoc對于學(xué)習(xí)如何使用一個類庫來說翰铡,并不總是最高效的方式。因此讽坏,在這里锭魔,我們嘗試為Guava的一些最流行的和最強大的特色功能,提供一種可讀的和愉快的闡述路呜。
Guava包含的內(nèi)容
- 基礎(chǔ)工具:更加愉快地使用Java語言
- 使用和避免null:
null
是模棱兩可的迷捧,可能引起令人困惑的錯誤织咧,有時也僅僅是字面上的令人不悅。很多Guava工具都拒絕null漠秋,并且在對null值進行快速失敗的處理笙蒙,而不是盲目地接受它。 - 前置條件:為你的方法提供前置條件庆锦,使測試更加容易捅位。
- 通用對象方法:簡單地實現(xiàn)
Object
中的方法,比如hashCode()
和toString()
搂抒。 - 排序:Guava強大的“流式比較器(Fluent Comparator)”類艇搀。
- Throwables:簡化異常和錯誤的傳播和檢查。
- 使用和避免null:
- 集合:Guava為JDK集合生態(tài)系統(tǒng)提供的擴展求晶。這些是Guava中最成熟和最流行的部分焰雕。
- 不可變集合:為了防御式編程,常量集合誉帅,提高效率淀散。
- 新集合類型:為了應(yīng)對JDK集合應(yīng)對不了的那些使用場景:multisets、multimaps蚜锨、tables档插、bidirectional maps,等等亚再。
- 強大的集合工具:為了補充
java.util.Collections
中沒有提供的常用操作郭膛。 - 擴展工具:需要寫一個Collection裝飾器實現(xiàn)Iterator接口嗎?我們可以使它變得更簡單氛悬。
- 緩存:本地緩存则剃,支持各種各樣的過期策略。
- 函數(shù)式風(fēng)格:請盡可能少的使用它如捅,Guava的函數(shù)式風(fēng)格可以顯著地簡化代碼棍现。
- 并發(fā):強大并且簡單的抽象,使得編寫正確的并發(fā)代碼變得更容易镜遣。
- ListenableFuture:一個在完成以后可以回調(diào)的Future
- Service:一個可以啟動己肮,停止的東西。其中已經(jīng)為你搞定了復(fù)雜的狀態(tài)邏輯悲关。
- 字符串:一些非常有用的字符串工具:splitting谎僻、joining、padding寓辱,等等艘绍。
- 原生類型:對原生類型(比如
int
和char
)的一些JDK沒有提供的操作(包括一些類型的無符號形式)。 - 區(qū)間:Guava的強大API秫筏,為處理在Comparable類型上的區(qū)間問題诱鞠,包括連續(xù)的和離散的挎挖。
- I/O:簡化I/O操作,尤其是對于Java 5和Java 6般甲,在整個流和文件上的操作肋乍。
- 哈希:這是比
Object.hashCode()
提供的更復(fù)雜的散列算法鹅颊,包括Bloom過濾器敷存。 - 事件總線:在組建之間的
發(fā)布-訂閱
風(fēng)格的通信,不需要組件具體指定被注冊的組件堪伍。 - Math:優(yōu)化的锚烦,并且被徹底測試過的,而JDK沒有提供的Math工具帝雇。
- 反射:Guava為Java反射所提供的工具涮俄。