Collections sécurisées, génériques, vides et génériques statiques
Je de retour à vide des collections vs null chaque fois que possible. Je switch entre les deux méthodes pour le faire à l'aide de java.util.Collections:
return Collections.EMPTY_LIST;
return Collections.emptyList();
où emptyList()
est censé être de type sécurisé. Mais j'ai découvert récemment:
return Collections.<ComplexObject> emptyList();
return Collections.<ComplexObject> singletonList(new ComplexObject());
etc.
Je vois cette méthode dans Eclipse Explorateur de Package:
<clinit> () : void
mais je ne vois pas comment cela est fait dans le code source (1.5). Comment est-ce de la magie tomfoolerie passe!!
EDIT:
Comment est-statique de type Générique accompli?
source d'informationauteur Droo | 2010-04-12
Vous devez vous connecter pour publier un commentaire.
http://www.docjar.com/html/api/java/util/Collections.java.html
Vous pouvez voir le lien pour la mise en œuvre de la EmptyList classe, si vous êtes curieux, mais pour votre question, il n'a pas d'importance.
L'utilisation de ce va se débarrasser des mises en garde de l'Éclipse sur la non-générique collections.
Après avoir dit que, typé liste vide va être fonctionnellement identique à un non vides de la liste en raison de la liste vide étant immuable et Java effacement des types génériques au moment de la compilation.
<clinit>
est l'initialiseur statique bloc. C'est un bloc de code qui est exécuté exactement une fois (lorsque la classe est chargée).Donc, au lieu d'écrire
On peut écrire:
Ces deux classes sont équivalentes. À l'intérieur d'un initialiseur statique bloc on peut placer du code arbitraire et donc initialiser les champs statiques avec les résultats des calculs complexes.
<clinit>
est le nom de la méthode dans laquelle la classe de code d'initialisation est recueilli par lors de la compilation. (Qui est, tout le code à l'intérieur destatic {}
blocs, et les initialiseurs statiques membres, dans l'ordre de code source.)Il n'a rien à voir avec le type explicite des paramètres dans les appels de méthode.