Как я могу вызвать метод с параметрами с помощью отражения?
Я хочу указать значения тех параметров.
Вот простой пример вызова метода с использованием отражения, включающего примитивы.
import java.lang.reflect.*;
public class ReflectionExample {
public int test(int i) {
return i + 1;
}
public static void main(String args[]) throws Exception {
Method testMethod = ReflectionExample.class.getMethod("test", int.class);
int result = (Integer) testMethod.invoke(new ReflectionExample(), 100);
System.out.println(result); // 101
}
}
Чтобы быть надежным, вы должны перехватывать и обрабатывать все проверенные исключения, связанные с отражением NoSuchMethodException
, IllegalAccessException
, InvocationTargetException
.
Вы можете использовать getClass в любом объекте, чтобы обнаружить его класс. Затем вы можете использовать getMethods , чтобы обнаружить все доступные методы. Если у вас есть правильный метод, вы можете вызвать , вызвать с любым количеством параметров
это самый простой способ, который я знаю, его нужно окружить try & catch:
Метод m = .class.getDeclaredMethod ("", arg_1.class, arg_2.class, ... arg_n.class); result = () m.invoke (null, (Object) arg_1, (Object ) arg_2 ... (Object) arg_n);
это для вызова статического метода, если вы хотите вызвать нестатический метод, вам нужно заменить первый аргумент m.invoke () с нуля на объект базовый метод вызывается из.
не забудьте добавить импорт в java.lang.reflect. *;