【发布时间】:2012-11-06 17:22:40
【问题描述】:
当我们有 peek() 和 poll() 时,在 Queue 接口中有 element() 和 remove() 有什么用?
我检查了文档,发现这些方法也存在于 java 7 中。 提到的唯一区别是 element() 和 remove() 为空队列抛出异常。 如果队列为空,我们可以手动抛出异常(如果需要)。
真的有必要为这唯一的区别保留两组方法吗?如果我们开始根据这些差异制作不同的方法,我认为 java 类和接口将充满很多方法。这是真正的面向对象风格吗?
编辑:只是为了让我的问题清楚,所以我没有得到相同的“你需要例外的地方使用这个,否则使用那个”的答案。 我无法理解的是有很多这样的方法,其中具有相同差异的额外方法将很有用。那么为什么它只在某些情况下实施而不在其他情况下实施呢?为什么没有整体应用相同的原则?我可以理解,也许只有语言创造者才能回答这些为什么。 我想知道这种方法是否符合 OOP 原则?
【问题讨论】:
-
Java 在这方面相当保守。例如,请参阅 ruby 中的方法范围或
Array和类似的类。 -
它们当然存在于 Java 7 中。您不能只从产品中删除功能。
标签: java data-structures queue