BeanUtils.copyProperties不copy null
时间: 2023-05-18 12:05:23 浏览: 238
BeanUtils.jar
BeanUtils.copyProperties方法默认不会复制null值。如果源对象的属性值为null,则目标对象的相应属性也将为null。如果您希望复制null值,则可以使用BeanUtils.copyProperties方法的重载版本,该版本允许您指定要复制的属性列表。例如,以下代码将复制源对象的所有属性,包括null值:
```
BeanUtils.copyProperties(source, target, new NullAwareBeanUtilsBean());
```
其中,NullAwareBeanUtilsBean是一个自定义的BeanUtilsBean实现,它覆盖了BeanUtilsBean的populate方法,以便在复制属性时处理null值。以下是NullAwareBeanUtilsBean的示例实现:
```
public class NullAwareBeanUtilsBean extends BeanUtilsBean {
@Override
public void populate(Object dest, Map<String, ? extends Object> map) throws IllegalAccessException, InvocationTargetException {
for (String name : map.keySet()) {
Object value = map.get(name);
if (value != null) {
super.setProperty(dest, name, value);
}
}
}
}
```
该实现将检查属性值是否为null,如果不是null,则调用父类的setProperty方法复制属性。如果您需要复制特定属性的null值,则可以将其添加到要复制的属性列表中。例如:
```
String[] propertiesToCopy = {"name", "age", "address"};
BeanUtils.copyProperties(source, target, propertiesToCopy);
```
这将复制源对象的name、age和address属性,包括null值。
阅读全文