2010-04-07 16 views
8

Według, http://www.freshvanilla.org:8080/display/www/Java+Interview+QuestionsCzy null jest klasą w języku Java?

Under,

Która klasa jest nadklasą każdym klasie?

null wydaje się być odpowiedzią.

stwierdziliśmy, że

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

weryfikuje odpowiedzi prawidłowe. Ale czy null może być uważany za klasę? widzę wszystkie prymitywne typy danych są reprezentowane jako obiekty klasy z java [dot] sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

+1

Po prostu kocham twój 'nowy obiekt(). GetClass(). GetSuperClass() == null'. –

+2

Ktokolwiek napisał tę stronę, nie wie, o czym mówią. Zwalczyłbym całą sprawę. Co do oryginalnego pytania, należy przeredagować "która klasa jest nadklasą każdej klasy z wyjątkiem samej siebie?" –

+0

@KevinBourrillion +1 do Twojego komentarza sugerującego, że oryginalne pytanie powinno zostać zmienione na "Która klasa jest nadklasą każdej klasy z wyjątkiem siebie?" – sactiw

Odpowiedz

28

To jest rubinowe pytanie wywiadowcze. Jestem pewien, że odpowiedź, której szukają, to Object, a nie null. null nie jest klasą. Co to znaczy, gdy getSuperClass zwraca "nie ma żadnej nadklasy". null jest jedynie specjalną wartością, która może mieć odniesienie. Jeśli null byłaby klasą, można utworzyć instancje obiektów typu null. Nie byłoby również sensu przypisywać null do odniesienia do jakiegokolwiek innego typu.

+0

Dzięki temu czyści to. – Somerandomeguy

1

Pamiętaj, że klasa Class jest sama w sobie klasa. Dlatego podczas wywoływania c.getClass() wracasz do instancji instancji klasy Class. Ponieważ więc nie jest super klasa z Object, metoda nie może zwrócić niczego, więc zwraca null.

5

W java java.lang.Object jest nadrzędny (root) wszystkich innych obiektów i nie ma poprzednika.

Null nie jest wcale obiektem oznacza, że ​​obiekt nie jest dostępny (referencja zerowa).

Zobacz także JLS Chapter 4

1

Nie można rzutować obiektu null do innych typów pierwotnych i nie dziedziczą po nim. Klasa najwyższego poziomu w Javie to Object.

0

Obiekt jest super klasa wszystkich klas i null jest obiekt odniesienia

6

myślę klasa obiektu jest odpowiedzią.

z javadoc.

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

Jeśli ta klasa oznacza albo klasy Object, interfejs, prymitywny typ lub nieważny, to zwracana jest wartość null. nie oznacza to, że wartość null jest najwyższa.

Jeśli null jest klasą, myślę, że musi to być wartość Null. null nie jest klasą.

+0

+1 za wzmiankę "Jeśli null jest klasą, musi być nazywane Null" :-) Wierzę, że tutaj chodziło o "klasę" klasy. Wygląda na to, że metoda getSuperClass() obecna w klasie "Class" zwraca nadklasę klasy reprezentowanej przez obiekt, do którego się odwołuje i jeśli klasą reprezentowaną przez ten obiekt jest klasa Object, interfejs, typ pierwotny lub void, to getSuperClass () metoda zwraca po prostu wartość null. – sactiw

0

Słabo sformułowane pytanie. Tylko odpowiedź "prosta" jest poprawna jako odpowiedź na pytanie. Pozostałe są po prostu mylące.

Powiązane problemy