En Java, j'ai la méthode suivante:
public String normalizeList(List<String> keys) {
// ...
}
Je veux vérifier que keys
:
null
lui-même; etsize() == 0
); etString
qui est null
; etString
qui est vide ("")C'est une méthode utilitaire qui ira dans un JAR de type "commons" (la classe sera quelque chose comme DataUtils
). Voici ce que j'ai, mais je crois que c'est incorrect:
public String normalize(List<String> keys) {
if(keys == null || keys.size() == 0 || keys.contains(null) || keys.contains(""))
throw new IllegalArgumentException("Bad!");
// Rest of method...
}
Je crois que les 2 derniers contrôles pour keys.contains(null)
et keys.contains("")
sont incorrects et renverront probablement des exceptions d'exécution. Je sais que je peux simplement parcourir la liste à l'intérieur de l'instruction if
et rechercher des valeurs nulles/vides là-bas, mais je cherche une solution plus élégante, si elle existe.
keys.contains(null) || keys.contains("")
Ne lance aucune exception d'exécution ni aucun résultat true
si votre liste a une chaîne vide (ou nulle).
Cela me semble bien, les seules exceptions que vous obtiendriez de keys.contains(null)
et keys.contains("")
seraient si keys
était lui-même null
.
Cependant, puisque vous vérifiez cela pour la première fois, vous savez qu'à ce stade, keys
n'est pas null
, aucune exception d'exécution ne se produira.
Vous pouvez également utiliser Apache StringUtils et vérifier si la chaîne estBlank, cela vérifiera la valeur null, Emptystring et réduira également votre valeur.
if(StringUtils.isBlank(listItemString)){...}
Commander StringUtils Docs ici:
https://commons.Apache.org/proper/commons-lang/apidocs/org/Apache/commons/lang3/StringUtils.html
Je ne suis pas sûr, mais n'y a-t-il pas de classe d'assistance dans la bibliothèque ApacheCommon pour le faire? comme lorsque vous avez isEmpty pour une chaîne et que vous avez isNullOrEmpty dans la bibliothèque ApacheCommons
Consultez la liste en un seul passage
public static boolean empty(String s) {
if (s == null)
return true;
else if (s.length() == 0)
return true;
return false;
}
public String normalize(List<String> keys) {
if(keys == null || keys.size() == 0)
throw new IllegalArgumentException("Bad!");
for (String key: keys)
if(empty(key))
throw new IllegalArgumentException("Empty!");
// Rest of method...
return null;
}
Avec Java 8, vous pouvez faire:
public String normalizeList(List<String> keys) {
boolean bad = keys.stream().anyMatch(s -> (s == null || s.equals("")));
if(bad) {
//... do whatever you want to do
}
}