使用 BeanUtil 复制Java对象的属性

在不同的对象之间复制属性值是编程中可能遇到的繁琐工作,采用 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();
}

本文标题:使用 BeanUtil 复制Java对象的属性

文章作者:Morning Star

发布时间:2019年12月22日 - 12:12

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/java/java-copy-bean-property/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。