如题,这种场景其实项目里使用场景很多,经常需要进行这种对象值的复用,但是又怕使用不准确,影响到原对象的值。

那么该篇文章介绍一个方法,简单粗暴,就是使用BeanUtils。

JAVA 将一个对象的所有字段值 赋给另一个 对象_java



 

所以我们使用的是:

JAVA 将一个对象的所有字段值 赋给另一个 对象_复制_02

 

 

简单示例:

Dog,里面有两个字段(构造方法,setget省略):

JAVA 将一个对象的所有字段值 赋给另一个 对象_复制_03

 而SpecialDog里面有三个字段,其中name和age是一样的,但是多了一个nickName字段,

JAVA 将一个对象的所有字段值 赋给另一个 对象_拷贝_04

 

一般经常看到这种代码:

JAVA 将一个对象的所有字段值 赋给另一个 对象_赋值_05

 

现在只需要:

BeanUtils.copyProperties(dog, specialDog);

JAVA 将一个对象的所有字段值 赋给另一个 对象_拷贝_06

把dog字段属性赋值给specialDog。

检验一下:

 

public static void main(String[] args) throws Exception {


Dog dog=new Dog("kiki",1);
SpecialDog specialDog=new SpecialDog();
BeanUtils.copyProperties(dog, specialDog);
dog.setName("lulu");
System.out.println(specialDog.toString());
System.out.println(dog.toString());


}

结果:

JAVA 将一个对象的所有字段值 赋给另一个 对象_复制_07

 可以看到属性值已经赋值成功了,而且修改dog不影响specialDog的属性(注意这里的场景没有涉及到引用别的对象的使用,如果涉及到要注意了,BeanUtils.copyProperties是浅拷贝 ,浅拷贝出来的对象和原对象 中 的引用的对象都会同时受修改影响,因为浅拷贝出来,类内引用的其他对象都是同个对象)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OK,该篇介绍就到此吧。