2015-02-03 2 views
1

Это легко получить класс буквального для класса:Каков наилучший способ получить объект класса для типа массива?

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; 
Смежные вопросы