方法:
BeanUtils.copyProperties(源对象, 目标对象);
测试:
public class Test {
public static void main(String[] args) {
// 源对象
A a = new A("xiaoai", 12, "小米大学");
// 目标对象
B b = new B();
// 将源对象中的部分属性值赋值给目标对象中的同名同类型属性
BeanUtils.copyProperties(a, b);
// 测试
System.out.println(b.name);
System.out.println(b.age);
System.out.println(b.address); // A类中没有address属性,所以是null
}
}
@Data
@AllArgsConstructor
class A {
public String name;
public Integer age;
public String school;
}
@Data
class B {
public String name;
public Integer age;
public String address;
}
结果:
xiaoai
12
null
解释:
其中@Data
和@AllArgsConstructor
是Lombok注解,BeanUtils.copyProperties()
也是经常使用的,比如前端传递过来的数据比较杂多,我需要用vo类对象去接收,其中的部分属性就是我们实体类需要的,只要是同名同类型属性就可以直接使用该方法去赋值,简直舒服的不要不要的,其他的情况还有比如从一个微服务发送数据到其他微服务,我们可能使用to类对象发送,这种数据可能和实体类也不是一一对应的,这时候也可以使用我们的该方法,类似的使用位置还有很多……