我想为一个工作正常的类创建一个Iterator.我认为迭代器会尝试使用泛型类的TypeParameter进行迭代,但显然情况并非如此,因为Eclipse告诉我需要一个Object.
如果有人知道我做错了什么,我会非常高兴.
public class GenericClass<T extends OtherClass> implements Comparable, Iterable
{
private ArrayList<T> list = new ArrayList<T>();
[...]
@Override
public Iterator<T> iterator()
{
Iterator<T> iter = list .iterator();
return iter;
}
[...]
}
public class Main
{
public static void main(String[] args)
{
GenericClass<InstanceOfOtherClass> gen = new GenericClass<InstanceOfOtherClass>("Aius");
for(InstanceOfOtherClass listElement : gen) // This is the problem line; gen is underlined and listElement is expected to be an Object
{
System.out.println(listElement.getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
implements Comparable, Iterable
Run Code Online (Sandbox Code Playgroud)
您需要指定基接口的通用参数.
否则,您将Iterable非通用地实现,并且类型参数将变为Object.