2010-12-23 3 views
0

나는 반사를 통해 메소드를 호출하기 위해 노력하고있어. 문제의 방법은,이 전 런타임에 someMethodsomeInterface에 액세스 할 수 있고,자바 반사와 인터페이스 매개 변수

someclass.getMethod("someMethod", new Class[]{Class.forName("someInterface")}) 
     .invoke(...) 

에 의해 호출 할 필요는 없습니다

public void someMethod(someInterface<someObject> arg1) 

을 가정 해 봅시다 그러나 someInterface의면 ClassNotFound 예외와 함께 실패합니다. 인터페이스에 대해 Class 객체를 얻으려면 어떻게해야합니까?

+0

가능한 복제본 : http://stackoverflow.com/questions/10635025/classnotfound-exception-using-java-reflection – RAS

답변

1

난 당신이 인터페이스의 패키지를 잊고 있다고 생각합니다. 당신은 Class.forName을을 (호출 할 때) 정규화 된 클래스 이름을 사용해야합니다, 즉 Class.forName을 ('com.mycompany.MyClass') 개념적으로, 나에게 올바른 보이는

+0

네 말이 맞아. 나는 인터페이스에 대한 클래스를 얻는 방법을 알아 내려고 노력하면서 머리카락을 꺼내고 있었지만, 완전히 정규화 된 이름이 필요하다는 것을 잊어 버렸습니다. – polyglot

+0

좋은 하루 보내세요. 행복 반영! – AlexR

2

. 다음 사항을 확인하십시오 :

  • 클래스 경로의 인터페이스가 런타임에 있습니까?
  • 는 기본 패키지에 정말 인터페이스 (당신이 완전히을 한정)

마지막으로 ;-)

  • 가 (개인 패키지되지 않음) 인터페이스 공개 맞춤법 검사 (대소 문자 구분)
+0

좋은 제안! 두 가지 대답을 표시 할 수 없다는 것이 너무 나빴습니다. – polyglot