Comment tester List<String> vide ou nullness?
Il semble que peu importe ce que je fais-je obtenir un mauvais résultat.
Ma liste est définie comme suit:
private List<String> selectedPriorities;
Rien de bizarre ou de fantaisie sur les getter/setter:
public void setSelectedPriorities(List<String> selectedPriorities) {
this.selectedPriorities = selectedPriorities;
}
public List<String> getSelectedPriorities() {
return selectedPriorities;
}
Dans un bean de session je veux modifier une Liste différente basée sur le contenu (ou l'absence) de cette liste.
Ici, c'est que code:
List<String> restrictList = new ArrayList<String>();
restrictList.add("lower(logs.clazz) like lower(concat(#{logs.clazz},'%'))");
restrictList.add("lower(logs.rule) like lower(concat(#{logs.rule},'%'))");
PrioritySelectorBean selectorBean = (PrioritySelectorBean) Component.getInstance("prioritySelectorBean",true);
System.out.println("constructRestrictionList selectorBean "+selectorBean.getSelectedPriorities());
if (selectorBean.getSelectedPriorities() == null) {
System.out.println("IS NULL");
return restrictList;
}
if (selectorBean.getSelectedPriorities().isEmpty()){
System.out.println("IS EMPTY");
}
if (selectorBean.getSelectedPriorities().size()<1){
System.out.println("HAS NOTHING IN IT");
return restrictList;
}
System.out.println("NOT NULL");
restrictList.add("lower(logs.priority) in (#{prioritySelectorBean.selectedPriorities})");
Il tombe toujours de travers pour ne PAS NULL et ajoute la chaîne de restrictList. C'est me rend fou! Comment puis-je détecter le néant dans cette liste? Voici le journal extrait de
14:24:10,057 INFO [STDOUT] constructRestrictionList selectorBean []
14:24:10,057 INFO [STDOUT] NOT NULL
Je ne suis pas tout à fait sûr, mais au lieu de l'utilisation de ==, utiliser equals(), je pense que threre une méthode de ce nom. Si je me trompe s'il vous plaît supprimer ce commentaire
semble que vous avez vraiment une liste non vide ici 🙂 ce doeas size() renvoie? n' .get(0) de retour de quelque chose?
Birkin : val == null est parfaitement bien ici. mieux de ne pas les appeler des méthodes sur un objet si il est nul 😉
merci pour le montage
J'ai essayé de la taille des caractères() mais NullPointerException. Ne me demandez pas pourquoi je n'ai pas que lors de l'essai pour size()<1 ? Et pourtant, il DOIT être un non-vide de la liste.
semble que vous avez vraiment une liste non vide ici 🙂 ce doeas size() renvoie? n' .get(0) de retour de quelque chose?
Birkin : val == null est parfaitement bien ici. mieux de ne pas les appeler des méthodes sur un objet si il est nul 😉
merci pour le montage
J'ai essayé de la taille des caractères() mais NullPointerException. Ne me demandez pas pourquoi je n'ai pas que lors de l'essai pour size()<1 ? Et pourtant, il DOIT être un non-vide de la liste.
OriginalL'auteur april26 | 2011-03-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le résultat que vous voyez si la liste ne contient qu'une seule chaîne de longueur nulle:
Je suis d'accord, mais alors ne serait pas de taille() renvoie quelque chose? Je reçois des NPE quand je l'ai essayer et la taille des caractères(). Voir le commentaire ci-dessus.
Sans voir une compilable code qui reproduit le problème, je n'ai aucune idée!
Il ne fait aucun sens que le code que vous avez posté n'est pas à jeter un NPE, mais en essayant d'imprimer
size()
. Qui devrait être impossible (en supposant que vous mettez l'appel de print dans le même code). Il y a clairement quelque chose que nous ne voyez pas ici, donc je ne pense pas que nous pouvons vous aider. Essayer de poster un petit, autonome exemple complet que nous pouvons exécuter, peut-être.J'ai maintenant confirmé il y a 1 chose dans la liste. J'ai fait 3 tests sur la taille de la Liste, size()==0, size()==1, size()>1. Pour une raison quelconque, quand j'essaie de print .taille (), je reçois des NPE. Cependant, quand je test pour .size()==1-je obtenir un VRAI. Merci pour l'aide.
OriginalL'auteur Oliver Charlesworth
probablement parce que
besoin d'un retour?
Pas sûr -- pourquoi ne
System.out.println("IS EMPTY")
pas être imprimé et pourquoi ne pas selectorBean.getSelectedPriorities().size()<1 à false?OriginalL'auteur d-live