Method.invoke, какой параметр он может принимать? - PullRequest
0 голосов
/ 26 января 2019

У меня есть имя метода в строке, которое должно вызываться динамически. Метод name.invoke (объект, параметры) В вышеуказанном формате, каким должен быть объект? Должен ли он быть всегда создателем методом createNewInstance? Как я могу использовать уже построенный объект вместо него?

1 Ответ

0 голосов
/ 26 января 2019

каким должен быть объект?

Если метод static, параметр object должен быть null.

Если методне static, параметр object должен быть объектом, для которого вы хотите вызвать метод, т. е. объектом, который будет иметь значение this внутри метода.

Если это таквсегда создавать методом createNewInstance?

Нет.

Как использовать вместо него уже построенный объект?

Giveуже построенный объект "в качестве значения параметра object.


Пример

Обычно вы вызываете метод, подобный этому:

myObj.foo("bar");

Чтобы сделать тот же вызов, используя отражение:

Method m = myObj.getClass().getMethod("foo", String.class);
m.invoke(myObj, "bar");
...