Нулевой класс в Java? - PullRequest
       11

Нулевой класс в Java?

11 голосов
/ 07 апреля 2010

Согласно, http://www.freshvanilla.org:8080/display/www/Java+Interview+Questions

Под

Какой класс является суперклассом каждого класс

null кажется ответом.

Я обнаружил, что

 new Object().getClass().getSuperClass()

подтверждает ответ как правильный. Но можно ли null считать классом?

Я вижу, что все примитивные типы данных представлены Class объектами из java.lang. Классовая документация .

Ответы [ 7 ]

32 голосов
/ 07 апреля 2010

Это крутой вопрос для интервью. Я уверен, что ответ, который они ищут, это Object, а не null. null это не класс. Что означает, когда getSuperClass возвращает null, это "нет суперкласса". null - это просто специальное значение, которое может иметь ссылка. Если бы null был классом, вы бы могли создавать объекты типа null. Также не имеет смысла присваивать null ссылку любого другого типа.

8 голосов
/ 07 апреля 2010

Я думаю, что класс объекта - это ответ.

от Javadoc.

new Object().getClass().getSuperClass()

Если этот класс представляет либо класс Object, интерфейс, тип примитива или void, то возвращается ноль. это не значит, что null является superclass.

Если ноль - это класс, я думаю, что это должен быть нуль. нуль не является классом.

6 голосов
/ 07 апреля 2010

В java java.lang.Object является родителем (корнем) всех других объектов и не имеет предшественника.

Ноль вообще не является объектом, это означает, что нет доступного объекта (нулевая ссылка).

См. Также JLS Глава 4

1 голос
/ 07 апреля 2010

Нельзя привести объект Null к другим примитивным типам, и вы не наследуете от него.Класс верхнего уровня в Java - Object.

1 голос
/ 07 апреля 2010

Помните, что класс Class является самим классом. Поэтому, когда вы звоните c.getClass(), вы получаете экземпляр класса Class. Поэтому, поскольку не является суперклассом Object, метод getSuperClass() не может ничего вернуть, поэтому он возвращает null.

0 голосов
/ 07 апреля 2010

Плохо сформулированный вопрос. Только «простой» ответ является правильным как ответ на вопрос. Остальные просто сбивают с толку.

0 голосов
/ 07 апреля 2010

Объект - это суперкласс всего класса, а null - это ссылки на объекты.

...