"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)
---------------------------------------------------
有三種使用方式
1 .沒有參數,拋出異常信息 無相關錯誤信息
2 .有一個object 參數,拋出異常帶object.toString()信息
3.有其餘額外的字符長參數,按指定模版輸出異常信息
-----------------------------------------------------------
ordering 是 guava中流暢的比較器類,可以建造複雜的比較器,將他們應用的對象的集合
static方法
lexicographically 字典排序
------------------------------------------------------------------------------------------------
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();