java 反射不同类同属性赋值
时间: 2023-10-19 14:43:38 浏览: 163
使用Java反射机制可以实现不同类之间同名属性的赋值。具体实现步骤如下:
1. 获取源对象和目标对象的Class对象。
2. 通过源对象的Class对象获取源对象的属性列表,遍历属性列表。
3. 对于每个属性,通过目标对象的Class对象获取对应的目标属性。
4. 将源对象的属性值通过反射机制赋值给目标对象的属性。
下面是一个示例代码,假设有两个类A和B,它们有同名属性name和age:
```java
public class A {
private String name;
private int age;
// 省略 getter 和 setter 方法
}
public class B {
private String name;
private int age;
// 省略 getter 和 setter 方法
}
public class Test {
public static void main(String[] args) throws Exception {
A a = new A();
a.setName("Tom");
a.setAge(18);
B b = new B();
Class<?> clazzA = a.getClass();
Class<?> clazzB = b.getClass();
Field[] fieldsA = clazzA.getDeclaredFields();
Field[] fieldsB = clazzB.getDeclaredFields();
for (Field fieldA : fieldsA) {
for (Field fieldB : fieldsB) {
if (fieldA.getName().equals(fieldB.getName())
&& fieldA.getType().equals(fieldB.getType())) {
fieldB.setAccessible(true);
fieldB.set(b, fieldA.get(a));
}
}
}
System.out.println(b.getName()); // 输出:Tom
System.out.println(b.getAge()); // 输出:18
}
}
```
在上述代码中,我们通过反射机制将A对象的属性值赋值给B对象的属性。需要注意的是,源对象和目标对象的属性名和属性类型必须完全一致才能进行赋值。
阅读全文
相关推荐













