Получить кодовое имя класса <Array> - PullRequest
2 голосов
/ 27 апреля 2011

Я делаю некоторую генерацию кода, используя отражение, и мне нужно получить строку, описывающую определенные типы массивов в коде. API по умолчанию на самом деле не делает это простым.

  • (new int[12]).getClass().getName() возврат [I
  • (new Date[2][]).getClass().getName() возвращает [[Ljava.util.Date

Результат разбирается, но есть ли более простой и приятный способ получить int[] и java.util.Date[][] из этих двух, соответственно?

Ответы [ 2 ]

4 голосов
/ 27 апреля 2011

Попробуйте Class.getSimpleName().

Простое имя массива - это простое имя типа компонента с добавлением «[]».

3 голосов
/ 27 апреля 2011

Нет встроенного метода, который возвращает «красивое имя» (a.k.a имя, как написано в исходном коде Java),

getSimpleName() возвращает "красивое" имя: оно возвращает только имя класса без пакета и добавляет [] при необходимости.

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

 public static String getName(final Class<?> clazz) {
   if (!clazz.isArray()) {
     return clazz.getName();
   } else {
     return getName(clazz.getComponentType()) + "[]";
   }
 }
...