[英]Should I use null or empty string if the String is passed around in the code? (Java best practice)
我有一個在API中是可選的String。 如果我沒有得到該參數,我不確定是否應該使用空String
或null
值。 該值在許多函數中傳遞,並在其中一些函數中使用。
我一直在考慮這個,這就是我提出的。
null
可能會更好,因為如果開發人員嘗試使用它而不檢查它是否存在,它會拋出NPE。 ""
不會這樣做,所以開發人員可能會認為他在不存在時使用字符串。 ""
可能會更好,因為如果開發人員想要更改某些內容,他/她將不需要檢查空指針。 當開發人員不需要知道值是否存在就像改變字符串的編碼一樣時,這可能是有益的。 在這種情況下,最佳做法是什么?
編輯:我正在尋找為什么一種方法比另一種更好的原因。 和Optional
聽起來很有趣。
空字符串絕對優於null。 如果要指示該設置是可選的 ,並提供不同的行為,請使用Optional<String>
。
在我看來,如果""
不是該參數的有效值,請使用""
。 否則使用null
。
關於你的第一點,如果你試圖對一個空字符串進行子串或調用charAt
或類似的東西,你將得到一個IndexOutOfRangeException
。 所以我認為不鼓勵使用它而不檢查空字符串。 有很多方法可以防止NPE。
另一種選擇是Optional<String>
,但我認為目前它的語法看起來太難看了。 如果它不被認為是有效值,我仍然會使用""
。
如果您在API中返回null String,那么使用它的開發人員完全有可能忘記檢查其值是否為null
。 正如Joop在他的回答中已經提到的那樣,使用Optional<String>
。
這迫使API的消費者檢查它的存在(或者至少,考慮如何處理它的缺席),例如
myAPI.ifPresent(/* do something with String */);
myAPI.map(String::toLowerCase).orElse("");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.