Java >> Java tutorial >  >> Tag >> while

Hvorfor kaster Arrays.asList(null) en NullPointerException, mens Arrays.asList(someNullVariable) ikke gør det?

Forskellen handler kun om, hvordan argumentet bruges under kørsel:

Signaturen af ​​asList er

public static <T> List<T> asList(T... a)

Arrays.asList(returnNull()) kalder det med en Object . Dette klart bliver ikke fortolket som et array. Java opretter et array ved kørsel og sender det som et array med én null element. Dette svarer til Arrays.asList((Object) null)

Men når du bruger Arrays.asList(null) , argumentet, der sendes, anses for at være et array, og da metoden eksplicit mislykkes på null-arrays, der sendes som argument (se java.util.Arrays.ArrayList.ArrayList(E[]) ), får du den NPE.


Java tag