Guava - 概述



什麼是 Guava?

Guava 是一個開源的、基於 Java 的庫,包含 Google 的許多核心庫,這些庫被用於他們的許多專案中。它促進了最佳編碼實踐,並有助於減少編碼錯誤。它提供了用於集合、快取、基本型別支援、併發、常用註解、字串處理、I/O 和驗證的實用程式方法。

Guava 的優勢

  • 標準化 - Guava 庫由 Google 管理。

  • 高效 - 它是 Java 標準庫可靠、快速且高效的擴充套件。

  • 最佳化 - 該庫經過高度最佳化。

  • 函數語言程式設計 - 它為 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 檢查。

讓我們看看如何使用 Guava 提供的實用程式類 Optional 來以標準化方式解決上述問題。

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 類,您可以檢查呼叫方法是否傳遞了正確的引數。

廣告