El siguiente código simplemente usa una referencia nula como parámetro varargs.Varargs con parámetros nulos en Java
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);
}
}
La primera llamada al método temp(null, null);
muestra [null, null]
significa que str[0]=null
y str[1]=null
.
pero la posterior llamada a temp(null);
hace que el NullPointerException
a ser lanzado el que parece que el str
sí es null
.
Si se emite tipo String
algo así temp((String)null);
, funciona y muestra [null]
.
¿Por qué en la última llamada, se requiere un molde de tipo explícito? Me parece que se considera una matriz de cadenas con una referencia null
que es diferente de la primera llamada. ¿Cuál es la respuesta correcta?
'String str = null; Arrays.asList (str); 'funciona, ¿por qué? –
'Arrays.asList (str);' construye una 'java.util.List' con una entrada' null' en ella. 'String str = null;' no tiene nada que ver con la referencia de la 'Lista' que se está creando (que no es' null'). – Tiny
@Tiny. Exactamente :) –