我想知道为什么Collection.addAll()
方法只接受其他Collection
而不接受Iterable
。为什么?
对于Iterable
s,有没有类似的方法可以做到这一点?
发布于 2010-09-30 23:23:20
大概是因为Collection
接口是在Java1.2中引入的,而Iterable
只出现在1.5中,因此更改接口将破坏所有现有的实现。
发布于 2010-09-30 23:23:57
基本上是因为Iterable
可能永远不会结束(即hasNext()
永远返回true )。
此外,为了保持一致性,您可能认为一个Collection
可以添加另一个集合的所有元素,但是Iterable
不一定是一个集合(它可以是任何东西,比如ResultSet
包装器)。
发布于 2010-09-30 23:24:04
在核心JDK中有相当多的东西并不能很好地与普通的迭代程序一起工作。我推荐使用Guava来克服这些缺点。
https://stackoverflow.com/questions/3832054
复制相似问题