2013-10-16 2 views
0

CodeIgniter에서 URI example.com/index.php/blog/showitem/253으로 갈 때 제어기 blog을로드하고 showitem(253) 메소드를 실행합니다.가변 개수의 인자를 가진 리플렉션을 통한 메소드 호출하기

Reflection in Java에서 이와 비슷한 기능을 사용할 수 있습니까? 예를 들어, 올바른 방법으로 올바른 컨트롤러를 초기화하는 다양한 방법의 인수를 사용하는 loadController(String controllerName, String method, Objects args...) 메서드가 있습니다.

나는 문자열에서 클래스를 초기화하고 메소드를 호출 할 수 있다는 것을 알고 있지만 가변 인수에 걸려있다. 방법, 예 경우

switchController("NewsController", "showOne", 124); 

이 가능하고, :

public static void switchController(String controllerName, String methodName, Object ... args) 
{ 
try { 
    Class controller = Class.forName("director.controllers." + controllerName); 
    Method method = controller.getDeclaredMethod(methodName, Object[].class); 
    method.invoke(controller.newInstance(), args); 

내가 원하는 것은 내가 할 수있는이 같은 showOne(int id) 방법으로 NewsController를로드하는 것입니다 : 이것은 내가 지금 가지고있는 무엇인가? 방법

에 대한 JavaDoc을에서
+0

시도해 보셨습니까? 어떻게 된 거예요? –

+0

메소드를 호출 할 수 있지만 가변 인수 만 사용할 수 있습니다. 내가 원한 나의 편집 된 예를 보아라. – Bas

답변

1

개별 매개 변수는 기본 형식 매개 변수에 일치하도록 자동으로 랩이 해제되며, 기본 및 참조 두 매개 변수는 필요에 따라서 메소드 호출 변환 될 수 있습니다.

그래서 Integer 개체 주위에 랩핑하고 호출 할 수 있어야합니다. 그게 효과가있다.

관련 문제