J'ai ma Java comme ci-dessous;
public List<Lookup> findAll(String lang) {
Query query = entityManager.createNamedQuery("Lookup.findAll");
if (isValidLang(lang)) {
query.setParameter("lang", lang);
return query.getResultList();
} else {
//return empty list
}
}
Maintenant, la méthode retourne List pour les correspondances valides de lang.
Mais si ce n'est pas le cas, je veux retourner une liste vide. Ma question est de savoir comment mettre à jour le code et quelle est la meilleure façon de renvoyer une liste vide afin que le code n'échoue pas?
Cela devrait le faire:
} else {
return Collections.emptyList();
}
Collections.emptyList()
renvoie une liste immuable , c'est-à-dire une liste à auquel vous ne pouvez pas ajouter d'éléments si vous souhaitez effectuer une opération sur votre liste, puis créez une nouvelle instance de liste et renvoyez-la.
if (isValidLang(lang)) {
query.setParameter("lang", lang);
return query.getResultList();
} else {
return new ArrayList<Lookup>(); // return array list instance.
}
Avec Java 9
, vous pouvez maintenant utiliser la méthode d'usine statique List :: of pour créer une liste vide immuable:
} else {
return List.of();
}
Essayez-le comme ceci:
public List<Lookup> findAll(String lang) {
List<Lookup> result = new ArrayList<Lookup>();
Query query = entityManager.createNamedQuery("Lookup.findAll");
if (isValidLang(lang)) {
query.setParameter("lang", lang);
result = query.getResultList();
}
return result;
}
En utilisant ternary operator (boolean_expression ? statement1 : statemetn2 )
dans Java
nous pouvons vérifier chaque type de retour s'il s'agit de null
. Si nous le faisons une fois, toutes les méthodes d'appel utilisant le code en bénéficieront car elles n'ont pas à vérifier avec null
. Votre code peut être réécrit comme ceci -
public List<Lookup> findAll(String lang) {
Query query = entityManager.createNamedQuery("Lookup.findAll");
ArrayList lookupList = null;
if (isValidLang(lang)) {
query.setParameter("lang", lang);
lookupList = <ArrayList> query.getResultList();
}
return (null != lookupList ? lookupList : Collections.EMPTY_LIST);
}