Вызывающий метод с шаблоном имени

#java #syntax

#java #синтаксис

Вопрос:

Мне нужно вызвать некоторые функции, сгенерированные некоторыми библиотеками. Мне нужно будет вызывать fucntion1 , function2 , …, function10 один за другим. Вместо того, чтобы записывать их все в коде, есть ли какой-нибудь умный способ закодировать это?

Ответ №1:

Вы могли бы использовать отражение.

 Some some = new Some();

for (int i = 1; i <= 10; i  ) {
    some.getClass().getMethod("function"   i).invoke(some);
}
  

Комментарии:

1. Будет ли это интерпретироваться во время выполнения?

2. Действительно, так и будет. Смотрите также ссылку на руководство по отражению.

Ответ №2:

Вы также могли бы использовать класс Expression из пакета java.beans

http://download.oracle.com/javase/6/docs/api/index.html?java/beans/package-summary.html

создайте объект выражения.

 Expression(Object target,String methodName,Object[] arguments)
  

и затем для объекта expression вы можете использовать GetValue()

Приветствия!