Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему
Просто напишите
Class ofArray = o.getClass().getComponentType();
Из JavaDoc :
public Class<?> getComponentType()
Возвращает
blockquote>Class
, представляющий тип компонента массива. Если этот класс не представляет класс массива, этот метод возвращаетnull
.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getComponentType () :
public Class<?> getComponentType()
Возвращает
blockquote>Class
, представляющий тип компонента массива. Если этот класс не представляет класс массива, этот метод возвращает null ...
@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
Довольно просто!