Spring中BeanUtils.copyProperties方法测试

 

copyProperties顾名思义是复制属性,就是把A对象的属性复制给B对象的与之相同的属性。下面的属性省略Getter,Setter。


public class UserOne
{
 private int id;
 private String name;

 @Override
 public String toString()
 {
  return id + "......." + name;
 }
}

 


public class UserTwo
{
 private int id;
 private String name;
 private String address;

 @Override
 public String toString()
 {
  return id + "......." + name + "........" + address;
 }
}

 

 

public class UserThree
{
 private String id;
 private String name;
 private String address;

 @Override
 public String toString()
 {
  return id + "......." + name + "........" + address;
 }
}

 


import org.springframework.beans.BeanUtils;

public class Test
{
 public static void main(String[] args)
 {
  LessToMore();
  MoreToLess();
  ArgusMisMatch();
 }

 

 // 属性值少的复制给属性值多的,没有被复制到的属性就是该类型的默认值。 结果1......xy......null
 public static void LessToMore()
 {
  UserOne u1 = new UserOne();
  u1.setId(1);
  u1.setName("xy");
  UserTwo u2 = new UserTwo();
  
BeanUtils.copyProperties(u1, u2);
  System.out.println(u2);
 }


 
 // 属性值多的复制给属性值少的。结果1......xy
 public static void MoreToLess()
 {
  UserTwo u2 = new UserTwo();
  u2.setId(1);
  u2.setName("xy");
  u2.setAddress("aa");
  UserOne u1 = new UserOne();

  BeanUtils.copyProperties(u2, u1);
  System.out.println(u1);
 }


 
 //  报错argument type mismatch。u2的id类型是int,u3的id类型是String
 public static void ArgusMisMatch()
 {
  UserTwo u2 = new UserTwo();
  u2.setId(1);
  u2.setName("xy");
  u2.setAddress("aa");
  UserThree u3 = new UserThree();
  
BeanUtils.copyProperties(u2, u3);
  System.out.println(u3);
 }
}

 

总结一下

A对象把与同名且同类型的属性复制给B对象的属性。

没有同名的,B对象的没有被复制值的属性为该类型的默认值。

同名但类型不同,会报错:argument type mismatch

本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/961036如需转载请自行联系原作者


woshixuye111

上一篇:看得懂系列:eureka源码解析之配置文件篇


下一篇:【深入浅出jQuery】源码浅析--整体架构