方法iterator()在java.util.Collection和java.lang.Iterable中声明,它的超级接口?

Ily*_* K. 8 java collections

有人可以向我解释为什么Iterator<E> iterator();定义的方法java.util.Collection?收藏已经延伸java.lang.Iterable; 这种方法是多余的.这是为了方便吗?

rge*_*man 11

Collection接口是在Java 1.2中使用Collections API引入的.iterator然后存在该方法.但是,直到Java 1.5才引入该Iterable接口.Collection明确定义的原因iterator是因为它早于Iterable.一个的想法Collection返回一个Iterator早的想法Iterable.

  • 删除它会破坏向后兼容性.也就是说,人们在1999年编写了使用`Iterator i = myList.iterator()`的程序.从界面中删除该方法将导致这些程序停止编译. (3认同)
  • 好的,为什么它没有从java1.5中的Collection中删除?它不向后兼容吗? (2认同)
  • @slim 从 `Collection` 中删除从 `Iterable` 继承的方法不会破坏与 `Iterator i = myList.iterator();` 的兼容性。这就是继承的全部要点和OP的问题。唯一不再起作用的就是像 `Collection.class.getDeclaredMethod("iterator")` 这样的东西。但 rgettman 已经解决了这个问题,根本没有理由删除这个方法。 (2认同)