小编典典

我什么时候应该接受Iterable的参数 与收藏 在Java中?

java

在Java
中使用Iterable<T>vs.有哪些注意事项Collection<T>

例如,考虑实现一种主要涉及包含Foos
的集合以及一些关联的元数据的类型。这种类型的构造函数允许一次性初始化对象列表。(可以稍后设置元数据。)此构造函数应接受哪种类型?Iterable<Foo>Collection<Foo>

此决定有哪些考虑因素?

通过库类型,如下面列出的模式集合ArrayList(这可以从任何被初始化Collection,但 不是
一个Iterable),会导致我使用Collection<Foo>

但是为什么不接受Iterable<Foo>,因为这足以满足初始化需求?为什么Collection消费者要求的功能等级()比严格要求的功能等级(Iterable)高?


阅读 281

收藏
2020-12-03

共1个答案

小编典典

许多集合类型以前都存在Iterable<T>(仅在1.5中引入)-几乎没有理由添加一个构造函数来接受Iterable<T>
以及,
Collection<T>但是更改现有构造函数将是一项重大更改。

就个人而言,我会使用它Iterable<T>是否允许您做任何您想做的事情。它对调用者来说更加灵活,尤其是它使您可以使用Google Java
Collections(无疑是类似的库)进行 相对 容易的过滤/投影/等操作。

2020-12-03