Guava教學
Guava環境設置
Guava Optional類
Guava Preconditions類
Guava Ordering類
Guava Objects類
Guava Range類
Guava Throwables類
Guava集合工具
Guava Multiset接口
Guava Bimap接口
Guava Table接口
Guava緩存工具
Guava字符串工具
Guava Joiner類
Guava Spiltter類
Guava CharMatcher類
Guava CaseFormat類
Guava原語工具
Guava Bytes類
Guava Shorts類
Guava Ints類
Guava Longs類
Guava Floats類
Guava Doubles類
Guava Chars類
Guava Booleans類
Guava數學工具
Guava IntMath類
Guava LongMath類
Guava BigIntegerMath類
Guava Multimap類
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類,可以方便地查看調用者方法來傳遞參數正確與否。