Как получить класс Array для данного класса в Java?

У меня есть переменная Class, которая содержит определенный тип, и мне нужно получить переменную, которая содержит соответствующий класс массива. Лучшее, что я мог придумать, это следующее:

Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass();

Есть ли способ сделать это, не создавая новый экземпляр?

Ответы

Ответ 1

Если вы не хотите создавать экземпляр, вы можете создать каноническое имя массива вручную и получить класс по имени:

// Replace `String` by your object type.
Class stringArrayClass = Class.forName(
    "[L" + String.class.getCanonicalName() + ";"
);

Но Якоб Дженков в своем блоге утверждает, что ваше решение лучше, потому что ему не нужно возиться со строками.

Class stringArrayClass = Array.newInstance(String.class, 0).getClass();

Ответ 2

Class stringArrayOfClass = String[].class;