【发布时间】:2015-03-31 10:10:30
【问题描述】:
我对 Java 中的一个设计问题感到困惑。它在接口Collection下实现了许多抽象容器,并提供了方法hasNext()和Next()以及类Iterator。如果我将这些方法直接放在接口 Collection 下,然后在每个子类中覆盖它,会有什么缺点:
比如我已经实现了Next(); ArrayList 类下的 hasNext() 方法。所以我写的是
ArrayList ArrList=new ArrayList()
if(ArrList.hasNext())
new obj=ArrList.next();
}
返回存储在 ArrList 中的对象。
那么为接口Collection引入Iterator类是不是多余?设计 ArrList.iterator() 有什么好处;如果在界面中设置更方便?
我能找到任何书来解决这种 oop-design 问题(正如计算机科学家所描述的那样)吗?
感谢您的宝贵时间。
【问题讨论】:
-
集合与迭代器有很大不同,尽管两者是相互关联的。阅读iterator pattern。
-
比如
Collection有Set子接口,如果有hasNext就没意义了。 -
你明白那个代码块不会编译,对吧?因为
ArrayList实例没有有hasNext或next。迭代器不是“冗余的”,这是迭代器的全部意义:为您提供一种通过集合迭代的方法。 -
@MarounMaroun 所以你的意思是我们必须保留迭代器才能为所有这些子接口提供服务?
-
是的,这将是一个很好的阅读。