下面的列名稱是double類型。Field.set返回Java中的空字符串
Class c = this.getClass();
Field t = c.getDeclaredField(columnName);
t.setDouble(this,Double.parseDouble(""));
最後一行拋出「空字符串」
的例外,我需要在T插入空字符串,其中我試圖插入空字符串列的類型爲double。任何人都可以幫助並提供替代方案
下面的列名稱是double類型。Field.set返回Java中的空字符串
Class c = this.getClass();
Field t = c.getDeclaredField(columnName);
t.setDouble(this,Double.parseDouble(""));
最後一行拋出「空字符串」
的例外,我需要在T插入空字符串,其中我試圖插入空字符串列的類型爲double。任何人都可以幫助並提供替代方案
您不能在基元上設置空值或空值。如果您絕對需要將其設置爲空,然後更改字段的數據類型java.lang.Double中,然後調用t.set(this, null)
失敗是由於您嘗試解析「」作爲一個雙,而不是由造成值正在設置。
它說不能將雙字段設置爲空值 – user3274263
是的,沒錯。如果你想設置null,那麼使該字段的類型爲java.lang.Double(包裝類型),而不是「double」 –
parseDouble返回字符串的一個基本的double包含值:
返回一個新的雙初始化爲指定String表示的值,如由類Double的valueOf方法。
異常的原因:
拋出:
NullPointerException - 如果字符串爲null
NumberFormatException - 如果字符串不包含可解析的兩倍。
的Javadoc是你的朋友:https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble(java.lang.String)
對於你的問題,如果你花時間來閱讀javadoc的https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html#setDouble(java.lang.Object,%20double)
你可以看到這種方法(setDouble)
拋出:
NullPointerException - 如果指定的對象爲null並且該字段爲實例f ield。
,所以你可以使用它:
Double d = Double.valueOf("0.0");
t.set(this,d);
他想將字段設置爲「null」,而不是「 '0''。對於基元來說這是不可能的。 – f1sh
空String
是錯誤的方式去這裏。您想將值設置爲null
,這基本上意味着「沒有價值」。
使用此:
Class c = this.getClass();
Field t = c.getDeclaredField(columnName);
t.set(this, null);
請注意,如果您的字段的類型是Double
,不double
這隻會工作。
double
是一種原始類型,因此沒有真正的表示「無值」的方式。對象不是原語,而是對象。因此,他們可以設置爲null
,這是你想要的。
你覺得把一個空的''字符串'放入''Double''字段應該如何工作? – f1sh
我怎樣才能在該領域沒有任何顯示。設置null會拋出double不能設爲null的異常 – user3274263
你不能? 'double'需要有價值。未初始化的雙打被設置爲默認值「0.0」。如果你可以控制'columnName',你可以使它成爲'Double'而不是'double'(對象而不是primative),它被允許爲空。 – Ironcache