найти класс массива (String []. class - & gt; String.class) [duplicate]

Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему

33
задан harriyott 17 October 2008 в 17:13
поделиться

3 ответа

Просто напишите

Class ofArray = o.getClass().getComponentType();

Из JavaDoc :

public Class<?> getComponentType()

Возвращает Class, представляющий тип компонента массива. Если этот класс не представляет класс массива, этот метод возвращает null.

61
ответ дан T.J. Crowder 1 September 2018 в 10:02
поделиться

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getComponentType () :

public Class<?> getComponentType()

Возвращает Class, представляющий тип компонента массива. Если этот класс не представляет класс массива, этот метод возвращает null ...

21
ответ дан 2 revs, 2 users 71% 1 September 2018 в 10:02
поделиться

@ddimitrov - правильный ответ. Помещенный в код выглядит следующим образом:

public <T> Class<T> testArray(T[] array) {
    return array.getClass().getComponentType();
}

. В более общем случае мы можем сначала проверить, видит ли тип массив, а , затем получает свой компонент:

Object maybeArray = ...
Class<?> clazz = maybeArray.getClass();
if (clazz.isArray()) {
    System.out.printf("Array of type %s", clazz.getComponentType());
} else {
    System.out.println("Not an array");
}

Конкретный пример применит этот метод к массиву, для которого уже известен тип компонента:

String[] arr = {"Daniel", "Chris", "Joseph"};
arr.getClass().getComponentType();              // => java.lang.String

Довольно просто!

6
ответ дан Daniel Spiewak 1 September 2018 в 10:02
поделиться
  • 1
    Что, если первый элемент является нулевым, т. Е. String [] arr = {null, "Chris", "Joseph & quot;}; – Psycho 25 September 2016 в 06:34
Другие вопросы по тегам:

Похожие вопросы: