Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Поиск и вызов метода


Автор: Nobody 30.6.2004, 10:11
Ответ был найден опытным путём в процессе написания этого текста smile.gif Но всё-равно, вдруг кому интересно будет...
Итак, дано:
  • объект man, у которого есть метод setAge(int)
  • строка (String) methName, значение которой равно "setAge"
  • строка (String) methArgument, значение которой равно, напимер, "42"

Требуется:
По строке найти нужный метод и вызвать его, передав ему параметр.

Решение:
Берём в руки кукбук и читаем.

Код
Class [] argTypes = {
   Integer.TYPE;
Method meth = man.getMethod(argTypes);


Integer.TYPE - это таким хитрым способом берётся класс примитива типа int.

Читаем дальше.

Код

Object [] theData = {
   ??????
};
meth.invoke(man, theData);


Вот тут-то и обнаруживается, что кое о чём кукбук подло умалчивает. Итак, методу нужен примитивный аргумент, но int мы не можем поместить в массив Object[]. Подумав пару минут, я сделал так:

Код
Object [] theData = {
   new Integer(methArgument)
};
meth.invoke(man, theData);


Т.е. передал аргумент типа Integer. Как это ни странно, всё получилось smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)