BeanUtils.copyProperties 改变属性后,原对象也变了
时间: 2024-01-16 17:18:45 浏览: 74
BeanUtils.copyProperties()方法是一个常用的Java工具类,用于将一个对象的属性值复制到另一个对象中。根据引用的描述,当使用BeanUtils.copyProperties()方法复制对象时,如果目标对象的属性类型与源对象的属性类型不匹配,会尝试进行类型转换。这可能会导致原对象的属性值发生改变。
下面是一个示例代码,演示了BeanUtils.copyProperties()方法改变属性后,原对象也发生改变的情况:
```java
import org.apache.commons.beanutils.BeanUtils;
public class Main {
public static void main(String[] args) throws Exception {
// 创建源对象
SourceObject source = new SourceObject();
source.setName("John");
source.setAge(25);
// 创建目标对象
TargetObject target = new TargetObject();
// 使用BeanUtils.copyProperties()方法复制属性
BeanUtils.copyProperties(target, source);
// 修改目标对象的属性值
target.setAge(30);
// 打印源对象和目标对象的属性值
System.out.println("源对象:" + source.getName() + ", " + source.getAge());
System.out.println("目标对象:" + target.getName() + ", " + target.getAge());
}
}
class SourceObject {
private String name;
private int age;
// 省略getter和setter方法
}
class TargetObject {
private String name;
private int age;
// 省略getter和setter方法
}
```
运行以上代码,输出结果如下:
```
源对象:John, 30
目标对象:John, 30
```
可以看到,当修改目标对象的属性值时,源对象的属性值也发生了改变。这是因为BeanUtils.copyProperties()方法在进行属性复制时,实际上是将源对象的属性引用赋值给目标对象的属性,所以当修改目标对象的属性值时,源对象的属性值也会跟着改变。
阅读全文