¿Por qué una cadena nula pasada cuando se esperaba un tamaño de matriz rendimientos de ese arreglo como 1?

Sagar Saxena:

Estoy muy confundido en múltiples frentes. ¿Alguien puede arrojar algo de luz sobre esto. Aquí es un ejemplo de código.

public static void main(String[] args) {
    String str = null;
    abc(str);
}
static void abc(String... str){
    System.out.println(str.length);
}

SALIDA: 1

JBX:

Vamos a romper hacia abajo. Me cambió el nombre el nombre del parámetro para hacerlo más claro.

static void abc(String... arrayOfStrings){
    System.out.println(arrayOfStrings.length);
}

El String ...está diciendo que en vez de pasar un array, puede pasar los artículos uno tras otro como argumentos y debajo de ellos serán combinadas en una matriz para usted. Todavía se puede pasar un objeto explícito de tipo String[](en cuyo caso no va a crear la matriz para usted), pero pasando simplemente nullasume que es de tipo Stringno String[].

Que está haciendo abc(null)(porque el argumento que está pasando es null).

Así arrayOfStringstendrá un artículo, que pasa a ser una nullreferencia.

Por lo tanto, arrayOfStrings.lengthlos retornos 1.

Si lo hizo abc(null, null), se podrían obtener 2.

Si lo hizo abc((String[]) null)que se obtendría un NullPointerExceptionporque se estaría tratando de conseguir el lengthde un nullobjeto de referencia. Si tiene previsto pasar nulos, asegurarse de que los abc()controles para nullpoder acceder a la matriz pasada como argumento.

Como mejor evitar la práctica general que pasa nulltanto como sea posible, es mejor para pasar una matriz vacía. Pasando nulles sólo una píldora de veneno, a la espera de algún método para olvidar para comprobar nully tirar NullPointerException.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=197262&siteId=1
Recomendado
Clasificación