通过反射添加到列表

时间:2011-12-05 21:51:50

标签: java reflection bluej

public class Test
{
    private ArrayList<Object> list = new ArrayList<Object>();

    private void addToList(Object o)
    {
        list.add(o);
    }
}

如果我通过反射从外部类调用方法addToList(Object o),为了使反射调用能够访问列表,我需要考虑一些事项吗?

BMethod method = builderClass.getDeclaredMethod("addToList", new Class<?>[]{Object.class});

我正在使用BlueJ api,它类似于Java中的反射,但包裹了对象,因此包含了BMethod。

我只是想知道该方法是否需要对arraylist进行一些引用,因为它无法通过反射调用看到它

由于

我设法解决了这个问题。对于那些想要没有答案的人 - 我正在调用的方法,我添加了代码以反射性地获取内部字段。

2 个答案:

答案 0 :(得分:0)

您必须在method.setAccessible(true)对象

上致电Method

答案 1 :(得分:0)

不确定为什么要这样做,但它应该有用

  1. 检索方法(您已有)
  2. 设为accessible,允许您调用该方法,尽管它是私有的
  3. Invoke方法