3 Stimmen

Warum Attribute auf Klassenebene mit Null funktionieren

Ich würde denken, die folgenden würde NullPointerException auslösen

class N { 
    static int i;
    public static void main( String ... args ) { 
        System.out.println( ((N)null).i );
    }
}

Aber das ist nicht der Fall. Warum?

6voto

Andrey Punkte 57704

Porque i ist ein statisches Mitglied (Klassenebene). Es existiert für die Klasse, für jedes Objekt der Klasse. Es ist also kein Verweis auf ein Objekt erforderlich, so dass dieser Teil ((N)null) wird eigentlich ignoriert, außer bei der Typinferenz. Es könnte und sollte ersetzt werden durch N.i .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X