beanutils 列表复制
时间: 2023-08-27 12:04:07 浏览: 37
使用Apache Commons BeanUtils中的BeanUtils.copyProperties()方法可以将一个JavaBean的属性值复制到另一个JavaBean中,但是该方法默认不支持复制List类型属性的值。如果需要复制List类型属性的值,可以使用BeanUtils.copyProperties()方法的自定义转换器功能,实现List类型属性值的复制。
具体实现方式如下:
1. 定义一个自定义转换器类,实现org.apache.commons.beanutils.Converter接口,重写convert()方法。
```java
public class ListConverter implements Converter {
@Override
public Object convert(Class type, Object value) {
if (value == null) {
return null;
}
if (value instanceof List) {
List list = (List) value;
List copyList = new ArrayList();
for (Object obj : list) {
try {
Object copyObj = obj.getClass().newInstance();
BeanUtils.copyProperties(copyObj, obj);
copyList.add(copyObj);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return copyList;
}
return value;
}
}
```
2. 在使用BeanUtils.copyProperties()方法前注册自定义转换器。
```java
ConvertUtils.register(new ListConverter(), List.class);
```
3. 调用BeanUtils.copyProperties()方法进行复制。
```java
BeanUtils.copyProperties(dest, src);
```
其中,dest为目标JavaBean,src为源JavaBean。
这样,就可以实现List类型属性值的复制了。