Легко получить класс литерала для класса:
String.class
Но как я могу получить объект класса для типа массива?
Это работает, но это уродливое и, вероятно, не постоянная времени компиляции:
new byte[0].getClass()
Я посмотрел в JLS, но единственное, что я узнал, это то, что я называю "литералом класса", не является "буквальным" в соответствии с определением JLS.
Вы все равно можете использовать литерал класса, даже для типа массива. Это компилируется просто отлично.
Class<String[]> clazz = String[].class;
Class<byte[]> clazz2 = byte[].class;
Раздел 15.8.2 JLS гласит:
Литерал класса - это выражение, состоящее из имени класса, интерфейса, массива или примитивного типа или псевдо-типа
void
, за которым следует '.' иclass
токенов.
(смелый акцент мой)
Вы можете просто ввести
Class<?> clazz = byte[].class;