Добавление в список с помощью отражения - PullRequest
0 голосов
/ 06 декабря 2011
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});

Я использую API BlueJ, который похож на отражение в Java, но оборачивает объекты, следовательно, BMethod.

Мне просто интересно, нужно ли методу иметь какую-то ссылку на массив, поскольку он не может увидеть его с помощью вызова рефлексии

Спасибо

Мне удалось решить это. Для тех, кто хочет получить ответ - метод, который я вызывал, я добавил код, чтобы рефлексивно получить внутреннее поле.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Не уверен, почему вы хотите сделать что-то подобное, но оно должно работать

  1. Получить метод (который у вас уже есть)
  2. Сделайте его доступным , который позволяет вам вызывать метод, хотя он является приватным
  3. Вызов Метод
0 голосов
/ 06 декабря 2011

Вы должны позвонить method.setAccessible(true) на Method объекте

...