3 回答
TA贡献1779条经验 获得超6个赞
您不能将字符串值分配给非String类型的 Java 对象。但是我假设您可以将一个从默认构造函数构造的空对象(如果存在)分配给为空的属性。有了这个假设,请尝试以下解决方案:
for (PropertyDescriptor propertyDesc : beanInfo.getPropertyDescriptors()) {
if (propertyDesc.getReadMethod().invoke(job) == null
&& propertyDesc.getPropertyType() == String.class) {
propertyDesc.getWriteMethod().invoke(job, "NA");
}
else if (propertyDesc.getReadMethod().invoke(job) == null
&& propertyDesc.getPropertyType() != String.class) { //Other than String types
propertyDesc.getWriteMethod().invoke(job, propertyDesc.getPropertyType().newInstance());
}
}
不要忘记使用 try-catch 块处理此代码。并非类中的所有对象都可能具有默认构造函数,在这种情况下,您可能需要进一步自定义代码。
TA贡献1841条经验 获得超3个赞
坦率地说,这只是不好的做法。如果要将对象保存在数据库中并希望将空属性保存为“NA”(无论出于何种原因),只需将列的默认值设置为“NA”。您还可以在构造函数中使用属性值 = 'NA' 来初始化对象,从而节省大量循环对象属性的时间。
添加回答
举报