guava經常使用

教程:java

http://www.yiibai.com/guava/yii

http://ifeve.com/google-guava/工具

optional

注意java8一樣提供optional,區分ui

意義:google

  • 使用Optional除了賦予null語義,增長了可讀性,最大的優勢在於它是一種傻瓜式的防禦。
  • Optional 迫使你積極思考引用缺失的狀況 由於你必須顯式地從Optional獲取引用。
  • 如同輸入參數,方法的返回值也多是null。和其餘人同樣,你絕對極可能會忘記別人寫的方法method(a,b)會返回一個null,就好像當你實現method(a,b)時,也極可能忘記輸入參數a能夠爲null。將方法的返回類型指定爲Optional,方法的參數設置爲Optional,也能夠迫使調用者思考返回的引用缺失的情形。
  • isPresent方法能夠判斷實例是否爲null,防止NullPointException發生;
  • 若引用爲null則快速失敗,若是有null值存在即刻報錯而不是隻要上下文接受處理null值就默認使用null值繼續運行

方法:spa

1.經常使用靜態方法:code

Optional.of(T) 根據給定的引用建立Optional實例,若T爲null,則拋出NullPointerException
Optional.absent() 建立一個不包含任何引用的Optional實例
Optional.fromNullable(T) 根據給定的引用建立Optional實例,若T爲null,則建立一個Optional.absent

2.實例方法:blog

boolean isPresent() 若是Optional實例持有者包含一個非null的實例,則返回True,不然返回false
T get() 若是Optional實例持有者包含一個非null的實例,則返回非null的實例,不然拋IllegalStateException
T or(T defaultValue) 若是Optional實例持有者包含一個非null的實例,則返回非null的實例,不然返回這個defaultValue
T orNull() 若是Optional實例持有者包含一個非null的實例,則返回非null的實例,不然返回null
Set<T> asSet() 若是Optional實例持有者包含一個非null的實例,則返回一個只有一個元素的不可變Set,不然返回一個空Set

public class TestGuava {

  public static void main(String[] args) {
    Optional<Integer> a = Optional.of(15);
    Optional<Integer> b = Optional.absent();
    System.out.println(sum(a,b));

  }
  public static int sum(Optional<Integer> a,Optional<Integer> b){
    if(a.isPresent()&&b.isPresent()){
      return a.get()+b.get();
    }
    return 0;
  }
}

 

 

字符串工具教程

Joinerip

import java.util.Arrays;
import com.google.common.base.Joiner;

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      tester.testJoiner();    
   }

   private void testJoiner(){
      System.out.println(Joiner.on(",")
         .skipNulls()
         .join(Arrays.asList(1,2,3,4,5,null,6)));
   }
}

 

Splitter

import com.google.common.base.Splitter;

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      tester.testSplitter();
   }

   private void testSplitter(){
      System.out.println(Splitter.on(',')
         .trimResults()
         .omitEmptyStrings()
         .split("the ,quick, , brown         , fox,              jumps, over, the, lazy, little dog."));
   }
}

 LoadingCache

提供一種localcache的實現方案

相關文章
相關標籤/搜索