2015-02-03 8 views
1

그것은 클래스의 문자 클래스를 쉽게 얻을 :배열 유형에 대한 Class 객체를 가져 오는 가장 좋은 방법은 무엇입니까?

String.class 

하지만 배열 유형에 대한 클래스 객체를 얻을 수있는 방법?

이 작동하지만, 아마 컴파일 시간이 일정하지 추한, 그리고 :

new byte[0].getClass() 

내가 JLS에서 보았다하지만 난 알아 낸 유일한 것은 내가 "문자 클래스"는 호출하고있어 그 무엇 JLS 정의에 따르면 "리터럴"이 아닙니다.

답변

5

배열 유형의 경우에도 여전히 클래스 리터럴을 사용할 수 있습니다. 이것은 잘 컴파일됩니다.

Class<String[]> clazz = String[].class; 
Class<byte[]> clazz2 = byte[].class; 

Section 15.8.2 of the JLS 상태 :

클래스 리터럴는 뒤에 클래스, 인터페이스의 이름으로 이루어지는 식 배열 또는 원시 형 또는 유사 유형 void이며 ~로 '.' 토큰은 class입니다.

당신은 간단하게 입력 할 수 있습니다

2

(굵게 강조 광산)

Class<?> clazz = byte[].class;