Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与实现Iterable相关的对象类型有哪些_Java_Generics_Types_Interface_Iterator - Fatal编程技术网

Java 与实现Iterable相关的对象类型有哪些

Java 与实现Iterable相关的对象类型有哪些,java,generics,types,interface,iterator,Java,Generics,Types,Interface,Iterator,在过去的两天里,我在实现Iterable接口的整个过程中迷失了方向 我读过一些博客之类的东西,发现要实现Iterable,我显然需要一个函数,返回名为Iterator()的迭代器,但在整个实现过程中迷失了方向 现在,我读到的是我需要 public class MyCollection<E> implements Iterable<E>{ public Iterator<E> iterator() { return new MyIter

在过去的两天里,我在实现Iterable接口的整个过程中迷失了方向

我读过一些博客之类的东西,发现要实现Iterable,我显然需要一个函数,返回名为Iterator()的迭代器,但在整个实现过程中迷失了方向

现在,我读到的是我需要

public class MyCollection<E> implements Iterable<E>{

    public Iterator<E> iterator() {
        return new MyIterator<E>();
    }
}
公共类MyCollection实现了Iterable{
公共迭代器迭代器(){
返回新的MyIterator();
}
}
然后我需要

public class MyIterator <T> implements Iterator<T> {

    public boolean hasNext() {

        //implement...
    }

    public T next() {
        //implement...;
    }

    public void remove() {
        //implement... if supported.
    }
}
公共类MyIterator实现迭代器{
公共布尔hasNext(){
//实施。。。
}
公共交通工具{
//实施。。。;
}
公共空间删除(){
//实现…如果支持。
}
}
现在,我不明白的是E和T应该是什么类型。 哪些必须与我所迭代的内容相关,哪些可以/必须是泛型的

我已经试过了

public Iterator<SimpleHashtable.TableEntry> iterator() {
    return new TableEntryIterator<SimpleHashtable.TableEntry>();
}
公共迭代器迭代器(){
返回新的TableEntryInterator();
}
但是我得到了
类型不匹配:无法从SimpleHashtable.TableEntry迭代器转换为迭代器
错误


Plox帮助guize

E
T
是泛型类型参数,如果您的实现是泛型的,则将它们保留为参数。(还可以编写一个类来修复一个或多个参数,例如
MyIntegerCollection implements Iterator

在这种情况下,
E
代表“元素”(集合中元素的类型),而
T
代表“类型”(迭代器返回的对象类型)。对如何命名它们没有内在的要求,但这些是集合和迭代器的约定

你的方法大体上是正确的。但是,请注意,如果
迭代器是集合的内部类(这是常见的),则不应引入新的泛型参数;只需使用集合声明中相同的
E


至于您得到的具体错误,我们需要查看该代码。很可能,您忘记声明
tablentyerator实现迭代器

tablentyerator的定义在哪里?我还没有写完它。错误是因为它不完整吗?我不知道你是否没有向我们展示…似乎你的类TableEntryIterator没有实现迭代器。@almasshaikh它没有实现
迭代器
它是扩展还是实现的?@DominikDitoIvosevic在这种情况下,应该是
实现
。我的头在泛型类型边界的其他地方。