Quelles sont les considérations de l'utilisation de Iterable<T>
vs Collection<T>
en Java?
Par exemple, envisager de mettre en œuvre un type qui est principalement concerné par l'contenant une collection d' Foo
s, et certaines métadonnées associées. Le constructeur de ce type permet un temps d'initialisation de la liste des objets. (Les métadonnées peut être fixée plus tard.) Ce type de ce constructeur accepter? Iterable<Foo>
ou Collection<Foo>
?
Quelles sont les raisons de cette décision?
Suivant le modèle mis de l'avant par la bibliothèque de types, tels que ArrayList
(qui peuvent être initialisées à partir de n'importe quel Collection
, mais pas un Iterable
) m'a conduit à utiliser Collection<Foo>
.
Mais pourquoi ne pas accepter Iterable<Foo>
, étant donné que c'est suffisant pour l'initialisation des besoins? Pourquoi exiger un niveau plus élevé de fonctionnalité (Collection
) de la consommation, que ce qui est strictement nécessaire (Iterable
)?