我有一个用于各种类的接口(interface),所有这些类都应该实现 Iterator,所以我有类似的东西
public interface A extends Iterable<A> { ...otherMethods()... }
然而,对于具体类,这意味着我必须使用
public class B implements A { public Iterator<A> iterator() {...} }
当我更喜欢(或者至少,我认为我更喜欢)使用 public Iterator<B> iterator() {...}
时这样该类的具体使用就可以具有显式类型(以防我希望接口(interface)中没有的方法可用,或者类似的方法。也许永远不应该出现?或者如果它出现是糟糕的设计?
另一方面是使用 Iterator 接口(interface)
public interface A extends Iterator<A> { ...otherMethods()... }
具体类编译得很好
public class B implements A { public B next() {...} }
什么给了?
最佳答案
Carl 是对的,我的第一个答案没有通过编译,但这似乎可以。不确定这是否正是您想要的。
public interface A<T extends A> extends Iterable<T> {
}
public class B implements A<B> {
@Override
public Iterator<B> iterator() {
return null;
}
关于java迭代器/可迭代子接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374671/