我希望使用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;
}
如何访问这些参数?
答案 0 :(得分:0)
替换此行:
cmdMap.get(cmd).invoke(input.pop(), input);
这一个:
cmdMap.get(cmd).invoke(null, input.pop(), input);
第一个参数是您正在调用该方法的实例;如果是静态方法,您可以传递null
。
你不能省略它,因为现在第一个参数是错误的类型(String
而不是你的方法所在的类)并且参数的数量是不正确的。