Poniższy kod po prostu używa pustego odwołania jako parametru varargs.Varargs z parametrami pustymi w Javie
package currenttime;
import java.util.Arrays;
public class Main
{
private static void temp(String...str)
{
System.out.println(Arrays.asList(str));
}
public static void main(String[] args)
{
temp(null,null);
temp(null);
}
}
Pierwsze wywołanie metody temp(null, null);
wyświetla [null, null]
oznacza, że str[0]=null
i str[1]=null
.
, ale późniejsze połączenie z numerem temp(null);
powoduje wygenerowanie NullPointerException
, co oznacza, że sama nazwa str
to null
.
Jeśli jest to typ odlany na String
coś podobnego do tego temp((String)null);
, działa i wyświetla [null]
.
Dlaczego podczas ostatniego połączenia wymagany jest wyraźny rzut czcionki? Wydaje mi się, że jest to tablica znaków o numerze referencyjnym null
, która różni się od pierwszej. Jaka jest prawidłowa odpowiedź?
'String str = null; Arrays.asList (str); 'działa, dlaczego? –
'Arrays.asList (str);' tworzy 'java.util.List' z wpisem' null'. 'String str = null;' nie ma nic wspólnego z referencją tworzonej 'List' (która nie ma wartości" null "). – Tiny
@ Tiny. Dokładnie :) –