在Java中,Field.set返回空字符串

在Java中,Field.set返回空字符串,java,string,exception-handling,Java,String,Exception Handling,下面的列名为double类型 Class c = this.getClass(); Field t = c.getDeclaredField(columnName); t.setDouble(this,Double.parseDouble("")); 最后一行抛出“empty String”异常 我需要在t中插入空字符串,并且我尝试在其中插入空字符串的列的类型是Double。有人能帮忙并提供一个替代方案吗?您不能在原语上设置空值或null。如果绝对需要将其设置为null,则将字段的数据类型更改

下面的列名为double类型

Class c = this.getClass();
Field t = c.getDeclaredField(columnName);
t.setDouble(this,Double.parseDouble(""));
最后一行抛出“empty String”异常


我需要在t中插入空字符串,并且我尝试在其中插入空字符串的列的类型是Double。有人能帮忙并提供一个替代方案吗?

您不能在原语上设置空值或null。如果绝对需要将其设置为null,则将字段的数据类型更改为java.lang.Double,然后调用
t.set(此为null)


失败是由于您试图将“”解析为双精度,而不是所设置的值造成的。

parseDouble返回一个包含字符串值的基本双精度:

返回一个新的double,初始化为指定字符串表示的值,由类double的valueOf方法执行

例外情况的原因:

抛出:

NullPointerException-如果字符串为null

NumberFormatException-如果字符串不包含可解析双精度

Javadoc是您的朋友:

对于您的问题,如果您花时间阅读javadoc

您可以查看此方法的详细信息(setDouble)

抛出:

NullPointerException-如果指定的对象为null且字段为实例字段

因此,您可以使用它:

Double d = Double.valueOf("0.0");
t.set(this,d);

空的
字符串
在这里是错误的。您希望将值设置为
null
,这基本上意味着“无值”

使用以下命令:

Class c = this.getClass();
Field t = c.getDeclaredField(columnName);
t.set(this, null);
请注意,仅当字段类型为
Double
,而不是
Double
时,此选项才有效


double
是一种基本类型,因此,没有表示“无值”的真正方法
Double
对象不是原语,而是对象。因此,它们可以设置为
null
,这是您想要的。

您如何想象将一个空的
字符串
放入一个
Double
字段应该起作用?然后我如何在该字段中不显示任何内容。设置null会引发double不能设置为null的异常。您不能吗?
double
需要有一个值。未初始化的双精度设置为默认值
0.0
。如果您可以控制
columnName
,则可以将其设置为
Double
而不是
Double
(对象而不是primative),允许为空。对于上述情况,您还需要使用
set()
方法,而不是
setDouble()
它说不能将Double字段设置为空值是的,没错。如果要设置null,则将字段的类型设置为
java.lang.Double
(包装器类型),而不是
Double
。他希望将字段设置为
null
,而不是
0
。这在原语中是不可能的。