在Java中使用Iterable<T>
vs.有哪些注意事项Collection<T>
?
例如,考虑实现一种主要涉及包含Foo
s的集合以及一些关联的元数据的类型。这种类型的构造函数允许一次性初始化对象列表。(可以稍后设置元数据。)此构造函数应接受哪种类型?Iterable<Foo>
或Collection<Foo>
?
此决定有哪些考虑因素?
通过库类型,如下面列出的模式集合ArrayList
(这可以从任何被初始化Collection
,但不是一个Iterable
),会导致我使用Collection<Foo>
。
但是为什么不接受Iterable<Foo>
,因为这足以满足初始化需求?为什么Collection
消费者要求的功能等级()比严格要求的功能等级(Iterable
)高?