2011-01-10 16 views
13

mögliche Dubletten:
What is a Null Pointer Exception?
Java: Why aren't NullPointerExceptions called NullReferenceExceptions ?Warum hat Java NullPointerException anstelle von NullReferenceException?

Unsere reiner Neugier, weiß jemand, warum die NULL-Verweis Ausnahme in Java Nullpointer genannt wurde?

Es scheint widersprüchlich, dass in einer neuen Sprache, die offiziell keine Zeiger hat, eine Wahl getroffen wurde, diesen Namen zu verwenden, wenn eine Nullreferenz verwendet wird.

Wenn mir jemand auf eine autoritative Erklärung verweisen kann, würde das geschätzt werden.

+0

Unterhaltsam, haben Sie im letzten Jahr auf die Frage in Jsights Link kommentiert. =) – Riggy

+0

@Riggy: Ugh, mein Schlechter. Ich habe die falsche Suche (Java NullPointerException) anstelle von (Java NullReferenException) durchgeführt. Ich lösche die Frage, um jede unrechtmäßige Wiederholung aufzugeben. – Uri

Antwort

5

Die Aussage, dass Java "offiziell keine Zeiger" hat, ist einfach falsch. Nur weil Sie nicht rechnen können, heißt das nicht, dass es kein Zeiger ist. C ist nicht die letzte Autorität für die Programmierung der Terminologie. Die einzigen Leute, die sich darüber aufhängen, sind entweder C/C++ - Fans, die Java wegen seines Mangels an Power über den Bare Metal abwerten wollen, oder (unwahrscheinlich, heutzutage) Marketing-Leute, die Java als einfacher verkaufen wollen , sicherere Alternative zu Managern, die schlechte Erfahrungen mit C-Entwicklung gemacht haben.

Vom Java language specification:

Die Referenzwerte (oft nur Referenzen) sind Zeiger auf diese Objekte und eine spezielle Nullreferenz, , die auf kein Objekt verweist.

+2

Die Meinungsverschiedenheit über Namen allgemein verständlicher Konzepte ist ein grundlegendes Problem in der gesamten Informatikdisziplin. Was noch schlimmer ist, ist eine Meinungsverschiedenheit über Namen innerhalb einer einzelnen Sprachspezifikation. Was bringt es, zwei verschiedene Wörter zu haben, die sich auf dasselbe beziehen? Warum müssen sie uns sagen, dass es ein Zeiger ist? Zu sagen, dass es so effizient wie ein C/C++ Zeiger ist? In diesem Fall sollten sie sich dieser Benennungsdiskrepanz bewusst sein. – oleks

Verwandte Themen