java迭代器/可迭代子接口(interface)

标签 java generics interface iterator iterable

我有一个用于各种类的接口(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/

相关文章:

java - 从 bufferedReader 到 arraylist 的字符串

java - 以编程方式启动和取消 toast

C++ 保留指向模板对象的指针集合,所有指针都派生自非模板类

java - 比较 Java HashMap 中的 2 个键

c++ - 了解下限/上限接口(interface)

java - 在java中返回一个泛型而不进行转换?

java - 如何在使用 mvvm 模型时绑定(bind) zk 中字符串的一部分

java - 好的做法?虚拟对象

c# - 为什么我不能将 List<Customer> 作为参数传递给接受 List<object> 的方法?

Java : How to pass data from one class to another using interface?