2016-09-16 2 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; 
} 

가 어떻게 이러한 매개 변수에 액세스 할을? 이 하나

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

:

+0

어떻게 될 것으로 예상됩니까? 메소드 서명이 인수를 허용하지 않습니다. – chenchuk

+0

매개 변수를 전달하려고 시도한 것을 표시하면 문제가 무엇인지 확인할 수 있습니다. –

+0

매개 변수를 전달하려면 실제로 매개 변수를 사용하는 메서드를 선언 할 수 있습니다. – SLaks

답변

0

이 줄을 교체

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

첫 번째 인수는 당신의 메소드를 호출하고있는 인스턴스입니다; 정적 메소드의 경우 null을 전달할 수 있습니다. 첫 번째 인수가 잘못된 형식 (메서드가있는 클래스 대신 String)이고 인수의 개수가 잘못되었으므로 생략 할 수 없습니다.

관련 문제