Скажите, что я хочу, чтобы мой пользователь набрал команду в строку:
String command = scan.nextLine();
И они набирают что-то вроде object.function(). Как я мог вызвать введенную ими функцию?
object.function()
Используйте Отражение , чтобы найти и вызвать метод для определенного объекта по имени.
Это поможет вам: 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>);
Возможно, вы захотите попробовать Janino в качестве оценщика сценариев , который может компилировать, загружать и запускать код Java на лету.
Если функция существует где-то в вашем коде, используйте это:
ActivateUserDefAction.class.getMethod("method", null).invoke(this, null);
Я бы использовал оператор 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.