2012-03-13 5 views
1

난 반사오류 상태에 따라

actualoutput = mgenerateouput.invoke(outputclassinst,obj); 

obj을 사용하여 호출하는 방법의 두 가지 경우되어있다 obj[0]

케이스에 Section 형 객체를 포함 Object 어레이 형 1

public Student[] expectedOutputString(Section sec){ 
     //Object arra[] = Section.makeSection((String[])params[0]); 
     ReportCard rc = new ReportCard(); 
     Student[] exOut = rc.orderClass(sec); 
     return exOut; 
    } 

첫 번째 경우 perf 요법하지만 두 번째 경우에는 내가 Object으로 매개 변수 유형을 선언 할 때 IllegalArgumentException이 표시됩니다.

케이스 2 :

public Student[] expectedOutputString(Object params[]){ 
    //Object arra[] = Section.makeSection((String[])params[0]); 
    ReportCard rc = new ReportCard(); 
    Student[] exOut = rc.orderClass((Section)params[0]); 
    return exOut; 
} 

[

+0

2 인 경우 rc.orderClass ((section) params [0]); 두 번째가 아님 – Zavael

+0

IAE는 어느 선을 던집니까? –

+0

actualoutput = mgenerateouput.invoke (outputclassinst, obj); –

답변

0

코드 2 개체로하지만 개체 [], 오브젝트, 즉 어레이로서 변수를 선언되지 않는다. 그래서 당신의 obj [0]도 객체의 배열이어야합니다. 편집 : 또는 다른 방법으로 : 코드 2는 Object [] 대신 Object를 필요로합니다. 사례 2에서 변수 매개 변수를 사용하지 않는 이유는

rc.orderClass((Section)params[0]); // was: Second 
       ^^^^^^^ 
+0

[삭제 된 주석에 대한 답변] 리플렉션 메서드 호출에서 어떻게 처리되는지 잘 모르겠습니다. 나는 당장 NullPointerException을 던질 것으로 예상했다. 그러나 이것이 처리 되더라도 'null'이 실제 메소드에 전달되므로 null 배열의 params [0]에 액세스하면 NPE가 throw됩니다. 그리고 빈 배열에 대한 IndexOutOfBoundsException (?). – user1252434

+0

확인 나는 동일한 문제를 찾고있다 :) –

+0

java.lang.IllegalArgumentException : 인수 형식 불일치, 여전히 동일한 문제가 –

1

오타가 될 수 있을까? Like :

public Student[] expectedOutputString(Object ... params){ 
+0

그것은 단지 섹션이다, 유감스럽게도 타이핑 실수로 두 번째로 만들었다. –

0

:

관련 문제