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

1

Легко получить класс литерала для класса:

String.class

Но как я могу получить объект класса для типа массива?

Это работает, но это уродливое и, вероятно, не постоянная времени компиляции:

new byte[0].getClass()

Я посмотрел в JLS, но единственное, что я узнал, это то, что я называю "литералом класса", не является "буквальным" в соответствии с определением JLS.

Теги:
arrays
reflection
constants
literals

2 ответа

5
Лучший ответ

Вы все равно можете использовать литерал класса, даже для типа массива. Это компилируется просто отлично.

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

Раздел 15.8.2 JLS гласит:

Литерал класса - это выражение, состоящее из имени класса, интерфейса, массива или примитивного типа или псевдо-типа void, за которым следует '.' и class токенов.

(смелый акцент мой)

3

Вы можете просто ввести

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню