有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java执行与接收到的字符串相对应的方法

我是Java新手,我想执行一个与我收到的字符串对应的方法。 在Python中,我会这样做

myString = "create"
options = {
    "create": self.create,
    "delete": self.delete,
    "list_jobs": self.list_jobs
}
options[myString]()

这在Java中可能吗


共 (2) 个答案

  1. # 1 楼答案

    我会使用Map<String, Runnable>

    Map<String, Runnable> commandTable = new HashMap<String, Runnable>();
    
    static void initCommandTable() {
        commandTable.add("foo", new Runnable() { 
            @Override
            public void run() {
                 //implement foo command
                 ...
            });
    
        commandTable.add("bar", new Runnable() { 
            @Override
            public void run() {
                 //implement bar command
                 ...
            });
    
        ...
    }
    
    void doCommand(String command) {
        commandTable.get(command).run();
    }
    

    是的,Java比Python要详细得多。但我们已经知道了

  2. # 2 楼答案

    Java没有类似的功能,但可以使用switch

    switch (myString) {
    
        case "create":
            self.create;
            break;
        case "delete":
            self.delete;
            break;
        case "list_jobs":
            self.list_jobs;
            break;
    }
    

    请注意,您可能应该使用更复杂的面向对象概念,但对于简单的程序来说,这很好