2014-10-06 2 views
13

사람은 다음과 같은 명령문을 작성하는 더 좋은 방법을 알고 있나요 :배열 유형과 관련된 클래스를 가져 오는 방법은 무엇입니까?

example.mySpecialMethod(new MySpecialClass[0].getClass()) 

내가 배열 형식이 필요합니다,하지만 더 나은 솔루션이 있다면 나는 잘 모릅니다. 이 예제는 나에게 효과적이지만, 아마도 누군가 new 키워드 없이는 더 좋은 방법을 알고있을 것입니다.

+1

왜'MySpecialClass.class'? mySpecialMethod()가 매개 변수로 Class를 사용하면 배열을 인스턴스화하는 것은 의미가 없습니다. –

+0

메서드는 'Class c '를 매개 변수로 사용합니다. – user3280180

+0

알겠습니다. –

답변

17

new MySpecialClass[0]의 클래스는 MySpecialClass[].class 그래서 당신이 사용할 수 있습니다 :

example.mySpecialMethod(MySpecialClass[].class) 
+0

호기심에서 벗어나, 컴파일 타임에 컴포넌트 유형을 알 수없는 경우 가장 좋은 해결책은 무엇입니까? 'java.lang.reflect.Array.newInstance (componentClass, 0) .getClass()'보다 나은 방법을 생각할 수 없다. – biziclop

+0

@biziclop 내 코드는 원래 코드와 동일하다. 그러나 어떤 객체의 실제 클래스가 필요한 경우 해당 객체에 대한 참조가 필요합니다. – assylias

+0

나는 그것이 단지 완전한 제쳐두고 나에게 일어났다는 것을 안다. 배열의 클래스 객체가 주어지면, 단순히 getComponentType()을 호출하여 컴포넌트 클래스를 얻을 수있다. 그러나 그 반대는 훨씬 더 복잡해 보입니다. – biziclop

관련 문제