Как вызвать функцию Java из строки, хранящейся в переменной [дубликат

StackOverflow https://stackoverflow.com/questions/3038464

  •  27-09-2019
  •  | 
  •  

Вопрос

Возможный дубликат:
Вызов метода с именем «string» во время выполнения в Java и C

Мне нужно иметь возможность вызвать функцию, но имя функции хранится в переменной, возможно, это возможно. например:

public void foo ()
{
     //code here
}

public void bar ()
{
     //code here
}

String functionName = "foo";

// Мне нужно позвонить на функцию, основанную на том, что такое функциональное значение

Anyhelp было бы здорово, спасибо

Это было полезно?

Решение

Да, вы можете, используя отражение. Тем не менее, рассмотрим также Эффективное Java 2nd Edition, пункт 53: Предпочитайте интерфейсы для отражения. Отказ Если вообще возможно, вместо этого используйте интерфейсы. Отражение редко редко нужно вообще необходимо в целом приложений.

Смотрите также

Связанные вопросы

Другие советы

Легко делается с отражением. Некоторые примеры здесь а также здесь.

Основные биты кода

String aMethod = "myMethod";

Object iClass = thisClass.newInstance();
// get the method
Method thisMethod = thisClass.getDeclaredMethod(aMethod, params);
// call the method
thisMethod.invoke(iClass, paramsObj);

Используйте отражение.

Вот а пример

С отражение API. Что-то вроде этого:

    Method method = getClass().getDeclaredMethod(functionName);
    method.invoke(this);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top