Was sind die Überlegungen zur Verwendung von Iterable<T>
vs. Collection<T>
in Java?Wann sollte ich einen Parameter von Iterable <T> vs. Sammlung <T> in Java akzeptieren?
Sie können beispielsweise einen Typ implementieren, der in erster Linie eine Sammlung von Foo
s und einige zugehörige Metadaten enthält. Der Konstruktor dieses Typs erlaubt eine einmalige Initialisierung der Objektliste. (Die Metadaten können später festgelegt werden.) Welchen Typ sollte dieser Konstruktor akzeptieren? Iterable<Foo>
oder Collection<Foo>
?
Was sind die Überlegungen für diese Entscheidung?
dem Muster folgend von Bibliothekstypen wie ArrayList
dargelegt (die von jedem Collection
initialisiert werden kann, aber nicht ein Iterable
) würde mich führen Collection<Foo>
zu verwenden.
Aber warum nicht akzeptieren Iterable<Foo>
, vorausgesetzt, das ist ausreichend für die Initialisierung braucht? Warum vom Kunden ein höheres Maß an Funktionalität (Collection
) verlangen als das, was unbedingt notwendig ist (Iterable
)?
Es gibt einen tollen Artikel [hier] [1] dazu. [1]: http://www.artima.com/weblogs/viewpost.jsp?thread=119193 – amischiefr