BeanUtils.copyProperties如何指定字段不copy
时间: 2023-08-17 07:11:18 浏览: 212
在使用 BeanUtils.copyProperties 方法时,可以使用 BeanUtilsBean 的 copyProperties 方法来指定不需要复制的字段。下面是一个示例:
```
import org.apache.commons.beanutils.BeanUtilsBean;
public class Demo {
public static void main(String[] args) {
SourceBean source = new SourceBean();
source.setName("John");
source.setAge(25);
TargetBean target = new TargetBean();
BeanUtilsBean beanUtilsBean = new BeanUtilsBean() {
@Override
public void copyProperty(Object dest, String name, Object value) {
if (!name.equals("age")) { // 指定不复制的字段名
super.copyProperty(dest, name, value);
}
}
};
try {
beanUtilsBean.copyProperties(target, source);
System.out.println(target.getName()); // 输出:John
System.out.println(target.getAge()); // 输出:0(age 字段没有被复制)
} catch (Exception e) {
e.printStackTrace();
}
}
}
class SourceBean {
private String name;
private int age;
// 省略 getter 和 setter 方法
}
class TargetBean {
private String name;
private int age;
// 省略 getter 和 setter 方法
}
```
在上述示例中,我们创建了一个继承自 BeanUtilsBean 的自定义类,并重写了其 copyProperty 方法。在重写的方法中,我们判断字段名是否为 "age",如果不是,则调用父类的 copyProperty 方法进行复制。
这样,当调用 BeanUtils.copyProperties 方法时,会根据我们自定义的逻辑来决定是否复制指定的字段。
阅读全文