【问题标题】:How to modify a List via reflection如何通过反射修改列表
【发布时间】:2011-12-01 19:08:09
【问题描述】:

我设法通过反射访问了一个类变量,并将它存储在一个字段变量中。我也有该领域所属的课程。如何将 Field 对象转换为列表,因为我想使用反射添加到此列表中。

我通过反射访问的 List 变量(并且存储在 Field 对象中)我希望能够添加到它。

谢谢

import java.util.ArrayList;


    public class Test 
    {
        private ArrayList<Integer> aList = new ArrayList<Integer>();

        //some methods...
    }

    Field field = myObject.getClass().getField("aList");;
    field.setAccessible(true);
    //some how add an integer to that list

【问题讨论】:

  • 如果您向我们展示一些更具体的东西会有所帮助,例如您是在谈论将public class Foo{ private List&lt;?&gt; bar; } 中的bar 设置为List 的实例吗?或者你是说在public class Foo{ private Baz bar; }中改变bar的类型?
  • 你能发布一些代码吗?
  • 列表到底是什么?你能提供一个你想要的例子吗?

标签: java reflection


【解决方案1】:

未经测试:

ArrayList<Integer> myList = (ArrayList<Integer>) field.get(myObject);
myList.add(5);

我假设以上是您想要做的?从您的代码示例中有点不清楚。

此外,由于该字段是私有的,因此您需要使用 getDeclaredField() 而不是 getField()(如您在示例中使用的那样)。

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多