#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:
Плохо сформулированный вопрос. Только «простой» ответ является правильным в качестве ответа на вопрос. Остальные просто сбивают с толку.