Warum führt der Aufruf von Arrays.asList(null) zu einer NullPointerException, Arrays.asList(getNull()) dagegen nicht?

Jun 11 (20:37)

Der Aufruf von Arrays.asList(null); führ zu einer NullPointerException. Mit:

private Object getNull() {
    return null;
}

Arrays.asList(getNull())

funktioniert es dagegen. Auch der Aufruf von

Arrays.asList(null, null);

oder

Arrays.asList((Object) null);

ist fehlerfrei. Warum ist das so?

Alle Kommentare
matthias Jun 12 (22:54)

Der Unterschied besteht darin, wie das Argument für T.. von Arrays .asList zur Laufzeit interpretiert wird:

Arrays.asList(getNull())

ist äquivalent zu

Arrays.asList((Object) null)

und führt dann auch nicht zu einer Exception weil Java zur Laufzeit ein Array mit einem null Elementen anlegt:

Arrays.asList(new Object[]{ null })

Das gilt dann auch für Arrays.asList(null, null)

Bei Arrays.asList(null) wird null als Array interpretiert und eine NullPointerException geworfen.

0 0 0
Noch keine Stimmen abgegeben
Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Außerdem werden teilweise auch Cookies von Diensten Dritter gesetzt. Genauere Informationen finden Sie in unserer Datenschutzerklärung sowie im Impressum.