天天看點

最近公司引用了Google的一個基于java1.6的類庫Guava,詳細介紹檢視下面的部落格

Guava 是一個 Google 的基于java1.6的類庫集合的擴充項目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 這些高品質的 API 可以使你的JAVa代碼更加優雅,更加簡潔,讓你工作更加輕松愉悅。下面我們就開啟優雅Java程式設計學習之旅!

  項目相關資訊:

  官方首頁: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

  源碼包的簡單說明: 

  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:多線程工具包。

  類庫使用手冊:

  一.  基本工具類:讓使用Java語言更令人愉悅。

  1. 使用和避免 null:null 有語言歧義, 會産生令人費解的錯誤, 反正他總是讓人不爽。很多 Guava 的工具類在遇到 null 時會直接拒絕或出錯,而不是默默地接受他們。

  2. 前提條件:更容易的對你的方法進行前提條件的測試。

  3. 常見的對象方法: 簡化了Object常用方法的實作, 如 hashCode() 和 toString()。

  4. 排序: Guava 強大的 "fluent Comparator"比較器, 提供多關鍵字排序。

  5. Throwable類: 簡化了異常檢查和錯誤傳播。

  二.  集合類:集合類庫是 Guava 對 JDK 集合類的擴充, 這是 Guava 項目最完善和為人所知的部分。

  1. Immutable collections(不變的集合): 防禦性程式設計, 不可修改的集合,并且提高了效率。

  2. New collection types(新集合類型):JDK collections 沒有的一些集合類型,主要有:multisets,multimaps,tables, bidirectional maps等等

  3. Powerful collection utilities(強大的集合工具類): java.util.Collections 中未包含的常用操作工具類

  4. Extension utilities(擴充工具類): 給 Collection 對象添加一個裝飾器? 實作疊代器? 我們可以更容易使用這些方法。

  三.  緩存: 本地緩存,可以很友善的操作緩存對象,并且支援各種緩存失效行為模式。

  四.  Functional idioms(函數式): 簡潔, Guava實作了Java的函數式程式設計,可以顯著簡化代碼。

  五. Concurrency(并發):強大,簡單的抽象,讓我們更容易實作簡單正确的并發性代碼。

  1. ListenableFuture(可監聽的Future): Futures,用于異步完成的回調。

  2. Service: 控制事件的啟動和關閉,為你管理複雜的狀态邏輯。

  六. Strings: 一個非常非常有用的字元串工具類: 提供 splitting,joining, padding 等操作。

  七. Primitives: 擴充 JDK 中未提供的對原生類型(如int、char等)的操作, 包括某些類型的無符号的變量。

  八. Ranges: Guava 一個強大的 API,提供 Comparable 類型的範圍處理, 包括連續和離散的情況。

  九. I/O: 簡化 I/O 操作, 特别是對 I/O 流和檔案的操作, for Java 5 and 6.

  十. Hashing: 提供比 Object.hashCode() 更複雜的 hash 方法, 提供 Bloom filters.

  十一. EventBus: 基于釋出-訂閱模式的元件通信,但是不需要明确地注冊在委托對象中。

  十二. Math: 優化的 math 工具類,經過完整測試。

  十三. Reflection: Guava 的 Java 反射機制工具類。