Guava教學


Guava 是什麼?

Guava是一種基於開源的Java庫,其中包含谷歌正在由他們很多專案使用的很多核心庫。這個庫是為了方便編碼,並減少編碼錯誤。這個庫提供用於集合,快取,支援原語,並行性,常見註解,字串處理,I/O和驗證的實用方法。

Guava的好處

  • 標準化 - Guava庫是由谷歌託管。
  • 高效 - 可靠,快速和有效的擴充套件JAVA標準庫
  • 優化 -Guava庫經過高度的優化。

函式式程式設計 -增加JAVA功能和處理能力。

實用程式 - 提供了經常需要在應用程式開發的許多實用程式類。

驗證 -提供標準的故障安全驗證機制。

最佳實踐 - 強調最佳的做法。

考慮下面的程式碼片段。

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester guavaTester = new GuavaTester();
      Integer a =  null;
      Integer b =  new Integer(10);
      System.out.println(guavaTester.sum(a,b));
   }

   public Integer sum(Integer a, Integer b){
      return a + b;
   }    
}

執行程式,看到如下結果。

Exception in thread "main" java.lang.NullPointerException
    at GuavaTester.sum(GuavaTester.java:13)
    at GuavaTester.main(GuavaTester.java:9)

以下是該程式碼的問題。

sum() 不採取任何的保護傳遞的引數為null。

呼叫函式也並不擔心傳遞一個null 到sum()方法而產生意外。

當程式執行時,NullPointerException異常發生。

為了避免上述問題,null檢查要在每個這樣存在問題地方。

讓我們來看看使用Optional,Guava 提供實用工具類來標準化方式解決上述問題。

import com.google.common.base.Optional;

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester guavaTester = new GuavaTester();

      Integer invalidInput = null;
      Optional<Integer> a =  Optional.of(invalidInput);
      Optional<Integer> b =  Optional.of(new Integer(10));
      System.out.println(guavaTester.sum(a,b));
   }

   public Integer sum(Optional<Integer> a, Optional<Integer> b){
      return a.get() + b.get();
   }    
}

執行程式,看到結果如下。

Exception in thread "main" java.lang.NullPointerException
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:210)
    at com.google.common.base.Optional.of(Optional.java:85)
    at GuavaTester.main(GuavaTester.java:8)

讓我們來了解上述程式的一些重要概念。

Optional - 實用類,使程式碼使用null能夠正常。

Optional.of - 返回要用作引數Optional類的範例。檢查傳遞的值是否為null。

Optional.get - 獲取輸入儲存在Optional 類的值。

使用Optional類,可以方便地檢視呼叫者方法來傳遞引數正確與否。