Integer類包含一些方法來字符串轉換成整數:爲什麼整數不能解決空字符串
Integer.parseInt(null);
參數:字符串返回:整型,所以我預計,當參數爲null,該拋NPEInteger.valueOf(null);
參數:字符串返回:整型,所以我期望當參數爲null時,它應該返回null。但是這個先決條件是錯誤的,我問爲什麼沒有這樣的方法可以處理這種情況?
Integer類包含一些方法來字符串轉換成整數:爲什麼整數不能解決空字符串
Integer.parseInt(null);
參數:字符串返回:整型,所以我預計,當參數爲null,該拋NPE
Integer.valueOf(null);
參數:字符串返回:整型,所以我期望當參數爲null時,它應該返回null。但是這個先決條件是錯誤的,我問爲什麼沒有這樣的方法可以處理這種情況?
在太陽誰實施整型(一long
很久以前:))時,他們寫道,方法可能是沒有想到的數據庫中的人。除了在處理數據庫數據時,或者極少數情況下,您試圖用null顯式表示「unknown」時,null通常表示某些事情已經發生了嚴重錯誤。總的來說,一旦出現問題,立即提出例外是個好主意。 (a Fail fast設計)
如果您曾經花時間在C中查找由於字符串值超過您爲其提供的內存(然後重寫了某些程序代碼或其他數據)的分段錯誤,您將對於出現問題時不失敗是多麼糟糕有非常好的評價。
從Java 1.0開始,Java與數據庫的交互變得非常普遍,所以你可能會建議應該有一種方法來處理這個問題。整數是一個最終的類,所以如果你像類一樣構建你自己的整型,你將失去自動裝箱,所以這可能確實需要oracle改變語言。
基本上,你觀察到的是,現在是路,有人將不得不支付你周圍代碼:)
null
不是整數的有效表示。 Integer.parseInt()
要求解析的字符串是整型數字的整數表示。
public static int parseInt(String s, int radix)
440 throws NumberFormatException
441 {
442 if (s == null) {
443 throw new NumberFormatException("null");
444 }
Integer.valueOf(str)] //哪個inviokes的Integer.parseInt(STR)返回整數實例。
public static Integer valueOf(String s) throws NumberFormatException
569 {
570 return new Integer(parseInt(s, 10));
571 }
我可能是錯的,@ hudi,但這是你在找什麼?
public Integer valueOf2(String inputString) {
return (inputString == null) ? null : Integer.parseInt(inputString);
}
是啊我在評論中寫這個,但我的問題是爲什麼Integer類中沒有這樣的方法? – hudi 2013-02-27 15:36:02
@hudi,這個怎麼樣?
我從來沒有使用過它,但它看起來像如果有一個轉換錯誤,您可以指定一個默認值。我知道,爲了這個,在項目中加入另一個jar是一件很痛苦的事情;如果有標準的話會很好。
Javadoc說:「NumberFormatException - 如果字符串不包含可分析的整數」。這是你得到的? – 2013-02-27 15:26:38
這不是您通常需要依賴的行爲(對null參數返回null),所以它通常不是問題。如果您確實需要依賴它,只需創建一個包裝它並以所需方式處理null的實用程序方法? – berry120 2013-02-27 15:26:44
@EdwinDalorzo nope。我的問題是爲什麼有一些可以用空字符串處理的新方法。如果(value == null)返回null else retun valueOf(value),那麼創建如此困難? – hudi 2013-02-27 15:29:32