Я пытаюсь выяснить, как вызвать метод пользовательского класса. Вот процесс, который я пытаюсь сделать:Вызов метода с использованием отражения
1) Я инициализирую массив методов из списка методов моего пользовательского класса и пустой список методов, который будет использоваться для хранения отфильтрованного списка эти методы.
Method method[] = MyClass.getDeclaredMethods();
List<Method> x = new ArrayList<Method>();
2) Затем я запускаю свой массив методов в цикле for и отфильтровываю, какие методы не заполняют мои требуемые критерии.
for (Method m : methods){
if(...){
if(...){
x.add(m);
}
}
}
3) Наконец, мне нужно вызвать каждый из методов в завершенном списке. Вот где я застрял, я точно не знаю, как работает функция invoke. Вот что я пытаюсь:
for(int i=0; i < x.size(); i++){
boolean g = x.get(i).invoke();
if(...)
else(...)
}
Дело в том, я точно знаю, что это такое, я не знаю, я просто не удается найти ответы. На эти вопросы мне нужно ответить:
1) Какой из объектов действительно будет использовать функцию вызова? Это будет, в моем случае, конкретный метод, который я хочу вызвать, или экземпляр класса, который я пытаюсь вызвать?
2) Я знаю, что для функции invoke требуются аргументы, одним из которых являются данные параметров для метода. Я не совсем понимаю, что именно должен быть первым аргументом. Я думаю, что первый аргумент - это сам фактический метод, но затем я столкнулся с логическим циклом, потому что способ, которым я его кодировал, имеет метод, использующий функцию invoke, поэтому я тупик.
3) В моем случае методы, которые я хочу вызвать, фактически не принимают никаких параметров, поэтому, когда я действительно выясню, как работает функция invoke, мне нужно установить один из аргументов в значение null, или я просто опустил эту часть списка аргументов?
Первый шаг: прочитайте 'метод # invoke()' javadoc. Он отвечает на ваши вопросы. –
Что это? Я сожалею, очень новый для java и SO, поэтому я не знаком с ним. – user2993636
Java предоставляет действительно хорошую документацию для своего JDK в виде Javadoc. Вы можете прочитать о классе 'Method' и его методах [здесь] (http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html#invoke%28java.lang. Объект,% 20java.lang.Object ...% 29). –