Java 将一个类中的Object集合赋值给另一个类的同名Object集合
时间: 2024-03-13 11:45:40 浏览: 138
可以使用反射来实现将一个类中的Object集合赋值给另一个类的同名Object集合。具体步骤如下:
1. 获取源类和目标类的Class对象;
2. 使用Class对象的getDeclaredField方法获取源类和目标类中的同名字段;
3. 获取源类中同名字段的值;
4. 将源类中同名字段的值赋值给目标类中同名字段。
以下是一个示例代码:
```java
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class MyClass1 {
private List<Object> myList = new ArrayList<>();
public MyClass1() {
myList.add("hello");
myList.add(123);
}
public static void main(String[] args) {
MyClass1 myClass1 = new MyClass1();
MyClass2 myClass2 = new MyClass2();
Class<?> clazz1 = myClass1.getClass();
Class<?> clazz2 = myClass2.getClass();
try {
Field field1 = clazz1.getDeclaredField("myList");
Field field2 = clazz2.getDeclaredField("myList");
Object value = field1.get(myClass1);
field2.set(myClass2, value);
System.out.println(myClass2.getMyList()); // 输出:[hello, 123]
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
class MyClass2 {
private List<Object> myList;
public List<Object> getMyList() {
return myList;
}
public void setMyList(List<Object> myList) {
this.myList = myList;
}
}
```
在这个示例代码中,MyClass1中有一个名为myList的List<Object>类型的字段,其中包含了两个元素:一个String类型的"hello"和一个Integer类型的123。我们使用反射将myList的值赋给了MyClass2中同名的字段myList,最后输出了MyClass2中myList的值,可以看到其值与MyClass1中的值相同。
阅读全文