我想我的領域的字符串值(也可以是長字符串或任何類型的對象),獲取空字符串當空
如果字段爲空比它應該返回空字符串,我這樣做有番石榴;
nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...
但是,如果變速箱爲空,則返回空值!不是空字符串,因爲valueOf方法會返回導致錯誤的字符串「null」。
任何想法?
編輯:有數百個領域我尋找一些容易實現
我想我的領域的字符串值(也可以是長字符串或任何類型的對象),獲取空字符串當空
如果字段爲空比它應該返回空字符串,我這樣做有番石榴;
nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...
但是,如果變速箱爲空,則返回空值!不是空字符串,因爲valueOf方法會返回導致錯誤的字符串「null」。
任何想法?
編輯:有數百個領域我尋找一些容易實現
使用內嵌空檢查
gearBox == null ? "" : String.valueOf(gearBox);
您可以使用Objects.toString()
(標準的Java 7):
Objects.toString(gearBox, "")
Objects.toString(id, "")
來自鏈接文檔:
public static String toString(Object o, String nullDefault)
返回的第一個參數調用
toString
如果第一個參數不爲空,否則返回第二個參數的結果。參數:
o
- 對象
nullDefault
- 字符串返回,如果第一個參數是null
返回:
第一個參數調用toString
的結果,如果它是不null
,否則就是第二個參數。另請參見:
toString(Object)
如果你不介意使用Apache公地,他們有一個StringUtils.defaultString(String str)
做這個。
返回傳入的字符串,或者如果字符串爲null,則返回空字符串(「」)。
如果你也想擺脫"null"
,你可以這樣做:
StringUtils.defaultString(str).replaceAll("^null$", "")
或忽略大小寫:
StringUtils.defaultString(str).replaceAll("^(?i)null$", "")
所有的解決方案,我會選擇已經公佈。因此,在這種特殊情況下,如果真的有那些必須改變,你可以考慮以某種方式不好和骯髒的解決方案陳述100S:
寫自己的String
類的null
返回""
。使用自己的String
實現,您不必更改現有代碼(可能會添加import
)。但這真的是一個不好的解決方案...我只想提及它;-)
我個人會使用搜索和替換,並與除此之外的任何其他答案一起去。
只是不提這樣的事情,如果它顯然是一個非常糟糕的建議... IMO這沒有任何好處 – BAER
對於Java 8,您可以使用可選的方法:
Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");
兩秒鐘太快了! – Rainbolt
@Samhain有100個字段我尋找易於實施的東西 – Spring