地图和我自己的方法

时间:2016-09-16 02:37:16

标签: java

我希望使用Map来访问我的方法,但是如果他们有这样的参数我就无法访问它们:

public static void cmdCheck(String cmd, Stack<String> input) throws Exception{

    cmd=cmd.substring(1,cmd.length());

    Map<String, Method> cmdMap = new HashMap<String, Method>();

    cmdMap.put("login", CommandDirectory.class.getMethod("subCmdCheck"));

    if(cmdMap.containsKey(cmd)){
        cmdMap.get(cmd).invoke(input.pop(), input);
    }else{
        System.out.println("UNKOWN COMMAND");
    }
    System.out.println("Done With Cmd Check");
}

public static Method subCmdCheck(String subCmd, Stack<String> input) throws Exception{
    if(subCmd.indexOf("-")==0){
        System.out.println("WORKING");
    }else{
        System.out.println("MISSING ESSENTIAL INFO, CORRECT USAGE:");
        System.out.println("    .login //Incomplete");
        System.out.println();
    }
    return null;
}

如何访问这些参数?

1 个答案:

答案 0 :(得分:0)

替换此行:

cmdMap.get(cmd).invoke(input.pop(), input);

这一个:

cmdMap.get(cmd).invoke(null, input.pop(), input);

第一个参数是您正在调用该方法的实例;如果是静态方法,您可以传递null。 你不能省略它,因为现在第一个参数是错误的类型(String而不是你的方法所在的类)并且参数的数量是不正确的。