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類,可以方便地查看調用者方法來傳遞參數正確與否。