Является ли null классом в Java?

#java #null

#java #null

Вопрос:

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

Под

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

null кажется, это ответ.

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

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

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

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

Комментарии:

1. Мне просто нравится ваш new Object().getClass().getSuperClass() == null .

2. Тот, кто написал эту страницу, на самом деле не знает, о чем говорит. Я бы сбросил со счетов все это. Что касается первоначального вопроса, его следует сформулировать иначе: «какой класс является суперклассом каждого класса, кроме самого себя?»

3. @KevinBourrillion 1 к вашему комментарию за предположение, что первоначальный вопрос лучше сформулировать следующим образом: «Какой класс является суперклассом каждого класса, кроме самого себя?»

4. Из вопросов с подвохом @Kevin Bourrillion получаются ОТЛИЧНЫЕ вопросы для интервью. Не стоит сбрасывать со счетов возможность того, что человек, написавший этот вопрос, не продумал его так далеко, но я могу обещать вам, что если вы ответите (независимо от того, ожидали они этого или нет) словами «Его нет. Наиболее близким был бы класс Object , но он не наследуется от самого себя и по-прежнему является частью «всех классов», поэтому ни один класс не является суперклассом для всех классов. » — ИМЕННО такого ответа добиваются многие интервьюеры, задавая свои вопросы.

Ответ №1:

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

Ответ №2:

Я думаю, что Object class — это ответ.

из javadoc.

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

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

Если null — это класс, я думаю, он должен быть Null. null — это не класс.

Комментарии:

1. 1 за упоминание «Если null — это класс, он должен называться Null» 🙂 Я полагаю, здесь вы имели в виду, что ответом является класс ‘Class’. Похоже, что метод getSuperClass(), присутствующий в классе ‘Class’, возвращает суперкласс класса, представленного объектом, на который ссылается объект, и если класс, представленный этим объектом, является классом Object, интерфейсом, примитивным типом или void, то этот метод getSuperClass() просто возвращает null .

Ответ №3:

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

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

Смотрите также главу 4 JLS

Ответ №4:

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

Ответ №5:

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

Ответ №6:

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

Ответ №7:

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