我将变量值设置为null,但是有问题:

public class BestObject {
    private Timestamp deliveryDate;
    public void setDeliveryDate(Timestamp deliveryDate) {
         this.deliveryDate = deliveryDate;
    }
}

BeanUtils.setProperty(new BestObject(), "deliveryDate", null); // usually the values are not hardcoded, they come from configuration etc

这是错误:
org.apache.commons.beanutils.ConversionException: No value specified
    at org.apache.commons.beanutils.converters.SqlTimestampConverter.convert(SqlTimestampConverter.java:148)
    at org.apache.commons.beanutils.ConvertUtils.convert(ConvertUtils.java:379)
    at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:999)

基本上,它试图将java.sql.Timestamp值设置为null,但是由于某些原因,它无法正常工作。

另一方面,我正在使用反射包装BeanUtils(http://commons.apache.org/proper/commons-beanutils/),也许可以通过普通反射来实现?

最佳答案

我设法用标准反射来做到这一点。

java.lang.reflect.Field prop = object.getClass().getDeclaredField("deliveryDate");
prop.setAccessible(true);
prop.set(object, null);

关于java - 通过反射将字段值设置为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19248529/

10-12 02:20