Добавление в список с помощью отражения

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 ответа

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

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

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