【发布时间】:2014-10-01 22:17:46
【问题描述】:
import java.util.*;
public class MyClass<Item> implements Iterable<Item> {
public Iterator<Item> iterator(){ return new ListIterator();}
public class ListIterator implements Iterator<Item>{
...
}
public static void main(String[] args){
}
}
如何将此迭代器与泛型类型一起使用?这些是我在“主要”功能中尝试过的方法:
MyClass <Item> deq = new MyClass();
ListIterator<Item> it = deq.iterator();
结果:non-static class Item cannot be referenced from a static context
MyClass deq = new MyClass();
ListIterator<Item> it = deq.iterator();
结果:non-static class Item cannot be referenced from a static context
MyClass deq = new MyClass();
ListIterator it = deq.iterator();
结果:non-static class Deque2.ListIterator cannot be referenced from a static context
编辑:
我调用的是类而不是方法。这有效:
Iterator it = deq.iterator();
我想既然 iterator() 中返回的实例的类型是 ListIterator,我需要用 'it' 声明该类型。
【问题讨论】:
-
投反对票是因为?我清楚地列出了我的问题,并准确显示了我遇到的错误。天哪。
-
我承认给出该错误的通用
Item类型参数在 Stack Overflow 上并不常见,但内部类是。 -
抱歉,我没有对您投反对票,我只向您提供了一个已被确定为此错误消息的“最佳”答案的答案。它可能适用于您的情况,也可能不适用,但您可能至少应该添加
Item类的类定义(存根),以便我们可以查看它是否真的是非静态的并嵌入到另一个类中。 -
@NobuGames 这是一个通用的。看这个链接:docs.oracle.com/javase/tutorial/extra/generics/simple.html
定义在哪里?