Java 如何使用jcommander执行已解析的命令?

Java 如何使用jcommander执行已解析的命令?,java,command-line-interface,jcommander,Java,Command Line Interface,Jcommander,我使用它在命令行上与用户交互 JCommander设置如下所示: JCommander jCommander = new JCommander(); jCommander.addCommand(new Command1()); jCommander.addCommand(new Command2()); jCommander.addCommand(new Command3()); Scanner scanner = new Scanner(System.in); jCommander.usag

我使用它在命令行上与用户交互

JCommander设置如下所示:

JCommander jCommander = new JCommander();
jCommander.addCommand(new Command1());
jCommander.addCommand(new Command2());
jCommander.addCommand(new Command3());

Scanner scanner = new Scanner(System.in);
jCommander.usage();
jCommander.parse(splitAsArgs(scanner.nextLine())));
String parsedCommand = jCommander.getParsedCommand();
JCommander parsedJCommander = jCommander.getCommands().get(parsedCommand);
Object commandObject = parsedJCommander.getObjects().get(0);
现在,我可以使用来检索正在解析的命令的名称

我的问题是,似乎很难将返回的字符串转换为传递给
addCommand
的实际对象。我可以在外部持有一张地图,进行这种翻译,但这是多余的,因为jcommander已经知道了这一切

如何将已解析命令的名称转换回命令对象本身?


通常,我传递给jcommander的所有命令都实现
Runnable
或类似的东西。因此,如果jcommander允许我访问已解析的对象,这将使我的生活更加轻松。

解决方案如下:

JCommander jCommander = new JCommander();
jCommander.addCommand(new Command1());
jCommander.addCommand(new Command2());
jCommander.addCommand(new Command3());

Scanner scanner = new Scanner(System.in);
jCommander.usage();
jCommander.parse(splitAsArgs(scanner.nextLine())));
String parsedCommand = jCommander.getParsedCommand();
JCommander parsedJCommander = jCommander.getCommands().get(parsedCommand);
Object commandObject = parsedJCommander.getObjects().get(0);
parsedJCommander
对象只有一个command对象,在我的例子中,它是我想要执行的
Runnable