java通过反射将对象集合赋值给某个类的集合属性
时间: 2024-03-13 20:47:19 浏览: 74
假设你有一个类`MyClass`,其中有一个类型为`List<MyObject>`的属性`myList`,你可以使用反射将一个对象集合赋值给该属性,具体步骤如下:
1. 获取`MyClass`类的`myList`属性对象。
```java
Field field = MyClass.class.getDeclaredField("myList");
```
2. 将`myList`属性的访问权限设置为可修改。
```java
field.setAccessible(true);
```
3. 创建一个对象集合,并向其中添加`MyObject`对象。
```java
List<MyObject> list = new ArrayList<>();
list.add(new MyObject("Object 1"));
list.add(new MyObject("Object 2"));
```
4. 将对象集合赋值给`myList`属性。
```java
MyClass obj = new MyClass();
field.set(obj, list);
```
完整代码如下:
```java
// 获取MyClass类的myList属性对象
Field field = MyClass.class.getDeclaredField("myList");
// 将myList属性的访问权限设置为可修改
field.setAccessible(true);
// 创建一个对象集合,并向其中添加MyObject对象
List<MyObject> list = new ArrayList<>();
list.add(new MyObject("Object 1"));
list.add(new MyObject("Object 2"));
// 将对象集合赋值给myList属性
MyClass obj = new MyClass();
field.set(obj, list);
```
需要注意的是,如果你希望通过该属性修改原始对象集合,你需要使用相同的对象集合对象进行赋值操作,例如:
```java
List<MyObject> list = new ArrayList<>();
list.add(new MyObject("Object 1"));
list.add(new MyObject("Object 2"));
MyClass obj = new MyClass();
field.set(obj, list);
// 修改原始对象集合
list.add(new MyObject("Object 3"));
System.out.println(obj.myList); // 输出 [Object 1, Object 2, Object 3]
```
阅读全文