google guava基本操作認識 二 原

 

避免空指針

"Null sucks." -Doug Lea

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

 

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

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

 

Optional

創建optional對象

 

查詢方法

公用方法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章