在不同的对象之间复制属性值是编程中可能遇到的繁琐工作,采用 Apache 的 BeanUtils 可以简化这些无聊的代码。
首先,在项目的 pom.xml 文件中引入依赖
1 2 3 4 5
| <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> </dependency>
|
然后,让我们直接看例子, 定义名为 Address 和 C1 的类, 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class Address {
private String name;
private String no;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getNo() { return no; }
public void setNo(String no) { this.no = no; } }
|
C1 的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class C1 {
private String a;
private String b;
private Address addr;
public String getA() { return a; }
public void setA(String a) { this.a = a; }
public String getB() { return b; }
public void setB(String b) { this.b = b; }
public Address getAddr() { return addr; }
public void setAddr(Address addr) { this.addr = addr; } }
|
最后,给出测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| C1 c1 = new C1();
c1.setA("a"); c1.setB("b");
Address addr = new Address(); addr.setNo("no.1"); addr.setName("Tom");
c1.setAddr(addr);
C1 c2 = new C1(); Address addr2 = new Address(); c2.setAddr(addr2);
try { BeanUtils.copyProperties(c2, c1);
System.out.println("c2.a = " + c2.getA()); System.out.println("c2.addr.name = " + c2.getAddr().getName());
} catch(Exception e) { e.printStackTrace(); }
|