Guava庫介紹

chszs發表於2015-05-01
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/45420415

一、什麼是Guava

1)Guava庫是一個適合很多Java專案的通用工具庫
2)Guava工具庫中包含了:集合Collection、併發Concurrency、原語Primitive、反射Reflection、比較Comparison、I/O操作、雜湊Hash、網路Networking、字串String、數學函式Math、快取Caching、記憶體中的釋出/訂閱……以及各種級別的資料型別
3)需要JDK 6以上版本

二、函式介面

在深入Guava庫之前,我們先了解其函式介面,瞭解這些函式介面有助於我們更好地掌握Guava庫。

函式介面:

1)函式介面是定義了單個方法的介面
2)函式介面包含了眾所周知的單個抽象方法(SAM,Single Abstract Method)
3)函式介面為Java 8 Lambda表示式提供了基礎
函式介面是很酷的:你指定任何一個介面都可以作為方法引數,還可以在Java 8中傳遞Lambda表示式
4)函式介面可以被當作回撥物件

三、函式介面的一些例子

下面的例子是Java 8的函式介面。

1、函式介面帶單個方法引數

@FunctionalInterface{
    public boolean check(Order o);
}

接著我們可以建立Lambda表示式,使用上面的函式介面。

IOrder newOrder = (Order o) -> o.getStatus().equals("NEW");

或者

IOrder newOrder = (o) ->o.getStatus().equals("NEW");
說明:

1)表示式右邊是一個簡單的檢查方法的內容——檢查傳遞到Order物件的狀態。
2)當建立了大量能表達需求行為或功能的Lambda表示式後,Lambda表示式的威力才能體現出來。

2、再舉個例子,緊接上面的例子,找出大額訂單。

// Lambda表示式找出大額訂單
IOrder bigOrderLambda = (Order o) -> o.getQuantity() > 10000000;
// Lambda表示式找出新的大額訂單
ITrade issuerBigNewTradeLambda = (o) -> {
    return o.getIssuer().equals("Honda") &&
        o.getQuantity() > 10000000 &&
        o.getStatus().equals("NEW");
}

四、總結

Google Guava庫在”com.google.common.base”中提供了幾個很有用的SAM,包括:
1)Function
指定了一個接收“T”型別例項並返回“R”型別例項的方法
2)Predicate
指定了一個傳遞“T”型別例項並返回布林型別的方法
3)Supplier
指定了一個能夠返回值的方法

還需要知道,這些SAM雖然誕生於Guava庫,但是也加入了Java 8。


相關文章