Je me demandais, quel moyen d'initialisation d'une liste est meilleur?
3 Réponses :
Ni, car aucun ne rend la liste immuable. Je suppose que vous voulez le rendre immuable, lorsque vous utilisez Si je suis correct en supposant que, vous devez consulter sinon, la DFA est correcte pour suggérer le premier. P> Une autre façon peut être ceci, P> < Pré> xxx pré> p> final code>. Si ce n'est pas le cas, je m'excuse pour mon hypothèse. collections.unmodifiablelist () code>. Et ce dernier viendra utile, P>
Le deuxième exemple est final de sorte que l code> est accessible à l'intérieur du bloc anonyme que je suppose. C'est mal guidé parce que vous n'en avez pas besoin et vous pouvez simplement écrire ajouter ("a") code> au lieu de l.add ("a") code> mais je suppose que c'est la raison plutôt que pseudo-immutabilité.
Je préfère utiliser des méthodes d'usine statiques du type suivant: Donc, vous pouvez les utiliser dans votre code à la prochaine manière: p> import static CollectionUtils.list;
import static CollectionUtils.newArrayList;
public class Main {
private final List<String> l1 = list("a", "b", "c");
private final List<String> l2 = newArrayList("a", "b", "c");
}
Je dois voter celui-ci, car il s'agit de l'approche que j'ai utilisée sur plusieurs projets. Cependant, je pense que vous avez oublié les importations statiques dans l'exemple "principal" :)
IDE les ajoute habituellement pour moi)
Google Collections cela (et beaucoup d'autres choses) pour vous. Ces méthodes d'usine sont dans la catégorie code> code> par exemple.
Je sais, mais cela contient trop de choses pour moi. Néanmoins, bon point, je l'ajoute à répondre.
Merci pour les informations de collections Google. Les bonnes pratiques continuent d'évoluer avec le temps :)
GUAVA (collections Google) a un fichier JAR d'env. 2 Mo. Lorsque je l'ajoutez à mon projet, le déploiement prend quelques secondes de plus (en raison de l'analyse du fichier JAR à chaque fois) et en raison de fuites de mémoire de glucides / problèmes de redéploy me fait tourner le poisson-verre plus souvent. Il n'est pas nécessaire de l'utiliser si vous n'avez besoin que de plusieurs classes, plutôt de vos propres cours utilitaires. C'est ce que j'ai fait et je vote cette réponse.
Ce dernier fonctionne, mais vous n'avez pas à utiliser
l. Code> -préfix dans le corps. Uniajouter ("a"); code> suffit.