Java 使用枚举执行命令

Java 使用枚举执行命令,java,command-line,enums,functor,Java,Command Line,Enums,Functor,谢谢你的阅读 我想实现一个枚举,它给出一个有效命令列表。我要求用户提供一个命令和一些与之配套的参数(如果可以国际化,那就太好了)解析该列表,检查它是否是有效的命令,然后使用这些参数运行正确的命令,或者报告错误。如何让它调用函数并向其传递参数 这看起来像一个骨架,但据我所知,execute()必须是无参数的 public enum CommandWords { OPEN() { public void execute() { Sy

谢谢你的阅读

我想实现一个枚举,它给出一个有效命令列表。我要求用户提供一个命令和一些与之配套的参数(如果可以国际化,那就太好了)解析该列表,检查它是否是有效的命令,然后使用这些参数运行正确的命令,或者报告错误。如何让它调用函数并向其传递参数

这看起来像一个骨架,但据我所知,execute()必须是无参数的

public enum CommandWords {
      OPEN() {
           public void execute() { 
                System.out.println("Now opening"); 
           }
      },
      SAVE() {
           public void execute() { 
                System.out.println("save a file"); 
           }
      };
      //And more methods, that actually manipulate the file

      //template method
      public abstract void execute();
 }

对不起,有一件事我不清楚。我想要执行的方法,不在这个类中,而是在其他地方定义的。我需要向该方法传递参数。我很困惑,因为在现实中,我不想覆盖这个方法,我想保留对另一个方法的引用。

怎么了?您可以像调用命令词一样调用
execute()
。OPEN.execute()。在您的示例中,抽象方法返回
boolean
,并使用
void
覆盖它。此外,我认为在这种情况下不需要使用
@Override
。我认为它可能比单个enum.execute()可以有参数要灵活一些。例如
objectexecute(Object…args)