鍍金池/ 教程/ Java/ Guava教程
Guava原語工具
Guava集合工具
Guava Chars類
Guava Shorts類
Guava CharMatcher類
Guava BigIntegerMath類
Guava Range類
Guava Bimap接口
Guava緩存工具
Guava Longs類
Guava Multiset接口
Guava Table接口
Guava Optional類
Guava LongMath類
Guava Spiltter類
Guava Preconditions類
Guava數(shù)學(xué)工具
Guava Ints類
Guava Ordering類
Guava Throwables類
Guava字符串工具
Guava Objects類
Guava Booleans類
Guava教程
Guava Bytes類
Guava CaseFormat類
Guava環(huán)境設(shè)置
Guava Doubles類
Guava Joiner類
Guava Multimap類
Guava Floats類
Guava IntMath類

Guava教程

Guava 是什么?

Guava是一種基于開源的Java庫,其中包含谷歌正在由他們很多項(xiàng)目使用的很多核心庫。這個(gè)庫是為了方便編碼,并減少編碼錯(cuò)誤。這個(gè)庫提供用于集合,緩存,支持原語,并發(fā)性,常見注解,字符串處理,I/O和驗(yàn)證的實(shí)用方法。

Guava的好處

  • 標(biāo)準(zhǔn)化 - Guava庫是由谷歌托管。
  • 高效 - 可靠,快速和有效的擴(kuò)展JAVA標(biāo)準(zhǔn)庫
  • 優(yōu)化 -Guava庫經(jīng)過高度的優(yōu)化。

函數(shù)式編程 -增加JAVA功能和處理能力。

實(shí)用程序 - 提供了經(jīng)常需要在應(yīng)用程序開發(fā)的許多實(shí)用程序類。

驗(yàn)證 -提供標(biāo)準(zhǔn)的故障安全驗(yàn)證機(jī)制。

最佳實(shí)踐 - 強(qiáng)調(diào)最佳的做法。

考慮下面的代碼片段。

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;
   }    
}

運(yùn)行程序,看到如下結(jié)果。

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

以下是該代碼的問題。

sum() 不采取任何的保護(hù)傳遞的參數(shù)為null。

調(diào)用函數(shù)也并不擔(dān)心傳遞一個(gè)null 到sum()方法而產(chǎn)生意外。

當(dāng)程序運(yùn)行時(shí),NullPointerException異常發(fā)生。

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

讓我們來看看使用Optional,Guava 提供實(shí)用工具類來標(biāo)準(zhǔn)化方式解決上述問題。

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();
   }    
}

運(yùn)行程序,看到結(jié)果如下。

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 - 實(shí)用類,使代碼使用null能夠正常。

Optional.of - 返回要用作參數(shù)Optional類的實(shí)例。檢查傳遞的值是否為null。

Optional.get - 獲取輸入存儲(chǔ)在Optional 類的值。

使用Optional類,可以方便地查看調(diào)用者方法來傳遞參數(shù)正確與否。


上一篇:Guava Objects類下一篇:Guava Range類