Как использовать текст в строке в качестве метода? - PullRequest
1 голос
/ 13 февраля 2012

Скажите, что я хочу, чтобы мой пользователь набрал команду в строку:

String command = scan.nextLine();

И они набирают что-то вроде object.function(). Как я мог вызвать введенную ими функцию?

Ответы [ 4 ]

2 голосов
/ 13 февраля 2012

Используйте Отражение , чтобы найти и вызвать метод для определенного объекта по имени.

Это поможет вам: http://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html

Что-то похожее на это:

Class c = Class.forName("targetName");
Object o = c.newInstance();

OR

c = myExistingObj.getClass();

Method m = c.getDeclaredMethod("getSomething");
m.invoke(o, <params>);
1 голос
/ 13 февраля 2012

Возможно, вы захотите попробовать Janino в качестве оценщика сценариев , который может компилировать, загружать и запускать код Java на лету.

1 голос
/ 13 февраля 2012

Если функция существует где-то в вашем коде, используйте это:

ActivateUserDefAction.class.getMethod("method", null).invoke(this, null);
0 голосов
/ 13 февраля 2012

Я бы использовал оператор if else или (ick) оператор регистра переключателя.Поскольку java компилируется, вы не можете просто написать код и заставить его выполнить его.

Например:

Object duck = new Object();
String userInput = System.in.read();
if (userInput = "duck.quack();"){
//do something
duck.quack();
}
else if (userInput = "duck.fly();"){
//do something else
duck.fly();
}
//etc.
  • Отредактировано для добавления примера кода
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...