2016-09-16 6 views
0

私は私のメソッドにアクセスするために地図を使用することを期待していたが、私は彼らがこのようなパラメータを持っている場合は、それらにアクセスすることができません:マップと私自身の方法

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

何が起こると思われますか?あなたのメソッドのシグネチャは引数を受け付けません – chenchuk

+0

あなたがパラメータを渡そうとしたことを示して、その問題が何であるかを見ることができます。 –

+0

パラメータを渡す場合は、実際にパラメータを取るメソッドを宣言することができます。 – SLaks

答えて

0

この行に置き換えます。この1と

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

:最初の引数はあなたが上のメソッドを呼び出しているインスタンスです

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

を。静的メソッドの場合、nullを渡すことができます。 最初の引数が間違った型(メソッドに含まれているクラスではなくString)で、引数の数が正しくないため、省略できません。

関連する問題