JAVA反射将两个不同类中的类型和属性名相同的进行赋值
时间: 2024-03-01 13:51:08 浏览: 136
可以使用Java反射中的Field类的set()方法来实现将两个不同类中的类型和属性名相同的进行赋值。具体步骤如下:
1. 获取类型相同的两个类的Class对象。
2. 使用Class对象的getDeclaredField()方法获取属性名相同的Field对象。
3. 将两个类的对象分别传入Field对象的set()方法中,即可完成赋值操作。
以下是示例代码:
```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 Main {
public static void main(String[] args) throws Exception {
A a = new A();
a.setName("Tom");
a.setAge(20);
B b = new B();
Class classA = a.getClass();
Class classB = b.getClass();
Field fieldA = classA.getDeclaredField("name");
Field fieldB = classB.getDeclaredField("name");
fieldB.setAccessible(true);
fieldB.set(b, fieldA.get(a));
fieldA = classA.getDeclaredField("age");
fieldB = classB.getDeclaredField("age");
fieldB.setAccessible(true);
fieldB.set(b, fieldA.get(a));
System.out.println(b.getName() + " " + b.getAge()); // 输出:Tom 20
}
}
```
注意:在使用Field对象的set()方法之前,需要调用setAccessible()方法将访问权限设置为true,否则会抛出IllegalAccessException异常。
阅读全文