java string defensive-programming

Es posible que Java String.split pueda devolver una Cadena nula



defensive-programming (4)

¿Es posible que split devuelva un String[] nulo String[] ? Tengo curiosidad porque quiero tratar de ser lo más defensivo posible en mi código sin tener controles innecesarios. El código es el siguiente:

String[] parts = myString.split("//w");

¿Necesito realizar una comprobación nula antes de usar la división de publicaciones de parts ?


El método Split llama al método Patter.split que hace esto al principio del método:

ArrayList<String> matchList = new ArrayList<String>();

Y al final does matchList.toArray () para devolver una matriz.

Entonces no hay necesidad de probar nulls.


No, no necesita verificar nulo en las partes.


Nunca devuelve nulo. Siempre debe verificar el javadoc del método si no está seguro. Por ejemplo String#split(String) dice

Este método funciona como si invocando el método de split dos argumentos

... y String#split(String,int) dice:

Si la expresión no coincide con ninguna parte de la entrada, la matriz resultante tiene solo un elemento, a saber, esta cadena.

Desde Javadoc también puede averiguar qué tipo de excepciones pueden suceder y, lo que es más importante, por qué se lanzaron esas excepciones. También es muy importante verificar si las clases son seguras para hilos o no.


Te recomiendo que descargues el código fuente de Java para esos momentos en los que la API no está clara. Todas las respuestas aquí solo te dicen la respuesta, pero realmente deberías verlo por ti mismo. Puede descargar el código fuente de Java desde here (mire cerca de la parte inferior de la página).

Al seguir el código fuente, terminará en String[] Pattern.split(CharSequence input, int limit) . El valor de retorno proviene de una ArrayList no nula en la que se llama toArray . toArray no devuelve null: en el caso de una lista vacía, obtendrá una matriz vacía de nuevo.

Así que, al final, no, no tienes que comprobar si es nulo.