2009-11-05 7 views
14

특정 유형을 보유하는 Class 변수가 있고 해당 배열 클래스를 보유하는 변수를 가져와야합니다. 내가 생각해 낼 수있는 가장 좋은 점은 다음과 같습니다.Java에서 주어진 클래스의 Array 클래스를 가져 오는 방법은 무엇입니까?

Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass(); 

새 인스턴스를 만들지 않고이를 수행 할 방법이 있습니까? 때문에

// Replace `String` by your object type. 
Class stringArrayClass = Class.forName(
    "[L" + String.class.getCanonicalName() + ";" 
); 

하지만 솔루션이 하나 더 Jakob Jenkov argues in his blog을 : 당신은 인스턴스를 생성하지 않으려면

답변

11

수동 배열의 정식 이름을 만들고 이름으로 클래스를 얻을 수 그것은 문자열을 만지작 필요가 없습니다.

Class stringArrayClass = Array.newInstance(String.class, 0).getClass(); 
+2

그는 위의 시작과 내 자녀로 끝납니다. 그래서'newInstance'가 이것을 수행하는 가장 깨끗한 방법이라고 생각합니다. –

+0

실제로 두 가지 방법으로 작동하지만 새 인스턴스를 만들고 싶지 않다고 말했죠. –

+0

참. 나는 실제로 더 깨끗한 해결책을 찾고있었습니다. 나는 새 인스턴스를 원하지 않지만 다음과 같은 것을 갖고 싶지는 않습니다 :-) –

-1
Class stringArrayOfClass = String[].class; 
+0

미리 유형을 알지 못합니다. Class 변수에 있습니다. 그래서 당신의 방법은 효과가 없을 것입니다. –

+2

지적 해 주셔서 감사합니다. –

관련 문제