在Java中,Field.set返回空字符串
下面的列名为double类型在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,则将字段的数据类型更改
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
。这在原语中是不可能的。