Я делаю инструмент на основе командной строки в Java, и я подумал, что мог бы сделать все это сам по себе, если бы мог принимать пользовательский ввод и автоматически находить необходимые функции на основе пользователейinput.
Что я хочу сделать, так это то, что если пользователь вводит:
User create newUser
Java-код ищет классвызываемый пользователь, затем ищет функцию с именем create и вводит newUser в качестве первого аргумента функции.Это означает, что ввод команды "User create newUser" приведёт к тому, что java-код вызовет следующую строку кода:
User.create("newUser");
И, конечно, вернет ошибки, если класс или функция не найдены, или около того.
До сих пор я играл с
Class.forName(cmdArg[0])
Где cmdArg [0] - это первое слово, данное сканером, найденное путем разбиения там, где есть пробелы.
В любом случае, этоВозможно ли достичь этого на Java?Любая помощь будет принята с благодарностью.
Мое решение:
Хорошо, я получил его, мое окончательное решение было комбинацией ответа duffymo и user978548, мое решение выглядит так:
Class comArgs[] = new Class[1];
comArgs[0] = String.class;
String[] args = new String[1];
args[0] = commandArray[2];
Class.forName("code."+commandArray[0])
.getDeclaredMethod(commandArray[1], comArgs)
.invoke(null, args);
Это окружено try / catch с множеством исключений, но оно работает.
У меня также есть HashMap, для которого я хочу получать команды.
Переменная args
может содержать столько аргументов, сколько необходимо для вызываемого метода.