2012-11-25 2 views
1

그래서 나는 클래스의 배열이 있습니다자바 클래스 (배열)의 인스턴스를 돌려

Class<?>[] classes; 

을 그리고 난 내 생성자의 클래스 있음을 채우는 그런 다음

public Sample (Class<?>[] classes){ 
this.classes = classes; 
} 

이, 나는이

public Object getInstanceOfClassWithIndex(int index){ 
    return new classes[index]; 
} 

불행하게도 작동하지 않습니다와 compil 원인 : 클래스 중 하나가 인덱스에 따라의 인스턴스를 반환 방법 전자 오류. 감사. 어떤 도움을 주시면 감사하겠습니다.

+3

컴파일 오류가 발생하면 어떻게 스택 추적을 할 수 있습니까? – Jack

답변

2

newInstance() 메서드를 호출하여 주어진 색인에서 클래스의 개체를 만들어야합니다.

return classes[index].newInstance(); 
+0

도움에 감사드립니다. – lorraine

1

문제는 여기에 불필요한 new을 가지고있다 :

return new classes[index]; 

시도로 :

return classes[index]; 

마음이가 Class<T>하지 T의 새로운 인스턴스를 반환합니다. 그것을 생성하려면 newInstance() 통해 반사를 사용해야합니다.

1

바꾸기 :

public Object getInstanceOfClassWithIndex(int index){ 
    return new classes[index]; 
} 

로 :

public Object getInstanceOfClassWithIndex(int index){ 
    return classes[index]; 
} 

당신은 새로운 인스턴스를 생성하지 않는, 그래서 new이 필요하지 않습니다.

관련 문제