Wie hier bereits erwähnt wurde, funktioniert es, weil get()
ist eine statische Methode. Hier ist eine Möglichkeit, wie Sie sich das vorstellen können:
Wenn Sie in Java eine Klasse definieren, legen Sie im Wesentlichen die Daten fest, die ein Objekt enthalten soll, sowie eine Reihe von Methoden, die mit diesen Daten arbeiten. Sie können zwar Tausende und Abertausende von Objekten haben, aber es macht keinen Sinn, Kopien aller Methoden für jedes dieser Objekte zu haben. Was passiert, ist, dass die Klasse die von Ihnen definierten Methoden speichert und sie in der Umfang des Objekts, für das Sie die Methode aufrufen. Wenn Sie versuchen, diese Methoden für ein nicht initialisiertes Objekt aufzurufen, ist das Objekt noch vorhanden und die Methode existiert auch noch, aber sie hat keinen gültigen Gültigkeitsbereich, in dem sie arbeiten kann, so dass Sie die NullPointerException
.
Die Ausnahme von dieser Regel sind statische Methoden, d. h. Methoden, die keinen Geltungsbereich benötigen - sie beziehen sich nicht auf objektspezifische Daten. Aus diesem Grund können sie unabhängig davon ausgeführt werden, ob das Objekt initialisiert ist oder nicht.
Denken Sie daran, dass Objekte keine Kopien ihrer Methoden haben... die Methoden werden nur im Bereich der Daten des Objekts aufgerufen. Sie können also immer noch auf die Methoden von null (nicht initialisierten) Objekten zugreifen, aber nicht-statische Methoden haben keine Daten, mit denen sie arbeiten können.