google guava基本操做認識 二

 

避免空指針

"Null sucks." -Doug Lea測試

"I call it my billion-dollar mistake." - Sir C. A. R. Hoare, on his invention of the null referencethis

 

1 粗心使用了null致使了不少bug ,迅速失敗而不是默認接受null,對開發者更明智spa

2.null存在歧義,如 map.get(key) 能夠理解爲map中對應的值爲null,或者是對應的值不在map中,null能夠表示成功,也能夠表示失敗,能夠表明任何事,使用明確的詞比null更清晰3d

 

Optional指針

建立optional對象code

 

查詢方法對象

公用方法blog

MoreObjects.firstNonNull(T,T)排序

Strings.接口

emptyToNull(String)

isNullOrEmpty(String)

nullToEmpty(String)

---------------------------------------------------

Preconditions

 

有三種使用方式

1 .沒有參數,拋出異常信息 無相關錯誤信息

2 .有一個object 參數,拋出異常帶object.toString()信息

3.有其餘額外的字符長參數,按指定模版輸出異常信息

-----------------------------------------------------------

 

排序Ordering

 

ordering 是 guava中流暢的比較器類,可以建造複雜的比較器,將他們應用的對象的集合

static方法

lexicographically 字典排序

 

------------------------------------------------------------------------------------------------

 

 

Common Object Utilities

 

equals

當對象的屬性爲null時,使用 Object 的equals方法時,須要判斷是否爲空才能使用.

Objects.equal 使得無需檢查空指針

hashCode

 

Guava使用 objects.hashcode(Object ...)使得不須要手動建立hash值

在jdk7中提供了相同的方法

 

toString .

 

好的方法在測試時寫入難,修改方便,使用MoreObjects.toStringHelper()建立好用的toString方法

MoreObjects.toStringHelper(Foo.class).add("x", 1).toString();

 

compare/compareTo

 

實現接口和相應的方法,實現起來比較痛苦,咱們能夠考慮更好的方法

 

Guava中提供了ComparisonChain,執行懶式比較,只有在發現nonzero結果時執行。

 

public int compareTo(Foo that) {

return ComparisonChain.start().compare(this.aString, that.aString)

.compare(this.anInt, that.anInt)

.compare(this.anEnum, that.anEnum, Ordering.natural().<T>nullsLast())

.result();

相關文章
相關標籤/搜索