Согласно, http://www.freshvanilla.org:8080/display/www/Java+Interview+Questions
Под
Какой класс является суперклассом каждого класса?
null
кажется, ответ.
Я нашел это
new Object().getClass().getSuperClass()
проверяет ответ как корректный. Но может null
считаться классом?
Я вижу, что все примитивные типы данных представлены как Class
объекты от java.lang. Документация класса.
Это неприятный вопрос на собеседовании. Я почти уверен, что они ищут ответ Object
, а не null
. null
не является классом. Когда getSuperClass
возвращает null
, это означает, что «суперкласса нет». null
- это просто специальное значение, которое может иметь ссылка. Если бы null
был классом, вы могли бы создавать экземпляры объектов типа null
. Также не имеет смысла присваивать null
ссылке любого другого типа.
В java java.lang.Object является родителем (корнем) всех других объектов и не имеет предшественника.
Null вообще не является объектом, он указывает на отсутствие объекта (нулевая ссылка).
См. также JLS Глава 4
Object является суперклассом всех классов, а null является объектной ссылкой
Я думаю, что класс Object - это ответ.
из javadoc.
new Object().getClass().getSuperClass()
Если этот класс представляет либо класс Object, либо интерфейс, либо примитивный тип, либо void, то возвращается null. это не значит, что null является суперклассом.
Если null - это класс, я думаю, что это должен быть Null. null не является классом.
Помните, что класс Class
является сам классом. Итак, когда вы вызываете c.getClass ()
, вы получаете обратно экземпляр класса Class
. Так как не существует суперкласса объекта
, метод getSuperClass ()
не может ничего вернуть, поэтому он возвращает null
.
Вы не можете преобразовать объект Null к другим примитивным типам и не наследуете его. Класс верхнего уровня в Java - это Object.
Плохо сформулированный вопрос. Только "простой" ответ является правильным ответом на вопрос. Остальные просто сбивают с толку.