Тип класса, динамически назначаемый переменной - PullRequest
2 голосов
/ 27 марта 2019

Я оборачиваюсь веб-сервисом Axis в микросервисе Springboot и наткнулся на какой-то код, который не имеет смысла.

Class cls = AmountInfo[].class;

Какой класс возвращается выше?

1 Ответ

1 голос
/ 27 марта 2019

Вот что должны сказать по этому поводу документы java.lang.Class:

Каждый массив также принадлежит классу, который отражается как объект Class, который используется всеми массивами с одинаковым типом элемента и числом измерений.

Так же, как объект Class для типа AmountInfo, существует Class для типа массива 1D массива AmountInfo[], так же как и для типа 2D массива AmountInfo[][], также и т.д.

A Class типа массива возвращает true, когда isArray() вызывается для него. AmountInfo[].class эквивалентно AmountInfo.class.arrayType(). И вы можете использовать его с API-интерфейсом отражения так же, как вы используете обычный класс (пример ниже):

//Creating a 1D array of AmountInfo type
jshell> Array.newInstance(AmountInfo.class, 2)
$65 ==> AmountInfo[2] { null, null }

// Creating a 2D array of AmountInfo type
jshell> Array.newInstance(AmountInfo[].class, 2)
$66 ==> AmountInfo[2][] { null, null }
...