Таким образом, я создаю приложение, которое работает через консольные команды (подумайте о «базе данных нового db_name»). Какой самый элегантный способ справиться с такими вещами?Элегантный способ разбора консольных команд в java
Heres мой маленький прототип, в основном просто тонны переключателей. Я имею в виду это работает, но это становится своего рода грязным, когда я хочу, чтобы добавить такие вещи, как положить все параметры, если вы передаете неправильный или слишком мало, так что им интересно, если Theres лучший вариант:
public static void main(String[] args) {
while (running) {
Scanner in = new Scanner(System.in);
String cmd = in.nextLine();
parseCmd(cmd);
}
}
private static void parseCmd(String s) {
String[] cmd = s.split(" ");
try {
switch (cmd[0]) {
case "exit":
running = false;
System.out.println("Shutting down...");
break;
case "database":
switch (cmd[1]) {
case "new":
databases.add(new Database(cmd[2]));
break;
default:
System.out.println("Unknown parameter");
break;
}
break;
default:
System.out.println("Unknown command");
break;
}
} catch (Exception ArrayIndexOutOfBoundsException) {
System.out.println("Too few arguments passed");
}
}
Я вы использовали эту библиотеку apache https://commons.apache.org/proper/commons-cli/usage.html и отлично работали –
Этот вопрос может быть лучше подходит для [Code Review Stack Exchange] (http: // codereview. stackexchange.com), поскольку он уже работает. Один из вариантов, который приходит на ум для вас, - использовать шаблон команды для обработки различных команд, поступающих с консоли. –
для этих случаев Мне нравится использовать перечисления –