web-dev-qa-db-fra.com

Est-il possible que Java String.split puisse renvoyer une chaîne nulle []

Est-il possible pour split de retourner un String[] Nul? Je suis curieux car je veux essayer d'être aussi défensif que possible dans mon code sans avoir de contrôles inutiles. Le code est comme suit:

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

dois-je effectuer une vérification nulle avant d'utiliser parts post fractionnement?

38
Woot4Moo

Il ne retourne jamais null. Vous devez toujours vérifier le javadoc de la méthode si vous n'êtes pas sûr. Par exemple String#split(String) dit

Cette méthode fonctionne comme si en appelant la méthode split à deux arguments

... et String#split(String,int) dit:

Si l'expression ne correspond à aucune partie de l'entrée, le tableau résultant n'a qu'un seul élément, à savoir cette chaîne.

À partir de Javadoc, vous pouvez également savoir quel type d'exceptions peut se produire et, surtout, pourquoi ces exceptions ont été levées. Une autre chose très importante à vérifier est de savoir si les classes sont thread-safe ou non.

50
palto

Je vous recommande de télécharger le code source Java pour les moments où l'API n'est pas claire. Toutes les réponses ici vous donnent juste la réponse, mais vous devriez vraiment voir par vous-même. Vous pouvez télécharger le Java code source de ici (regardez près du bas de la page).

En suivant le code source, vous vous retrouverez à String[] Pattern.split(CharSequence input, int limit). La valeur de retour provient d'un ArrayList non nul sur lequel toArray est appelé. toArray ne retourne pas null: en cas de liste vide, vous récupérez un tableau vide.

Donc à la fin, non, vous n'avez pas à vérifier la valeur null.

6
Paul

Non, vous n'avez pas besoin de vérifier la nullité des pièces.

1
mkro

La méthode Split appelle la méthode Patter.split qui fait cela au début de la méthode:

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

Et à la fin, matchList.toArray () renvoie un tableau.

Donc pas besoin de tester les nulls.

1
Varun Achar