我试图用Iterator作为内部类实现集合接口。一个实现集合的ArrayCollection类具有一个通用数组(这是说类成员是否通用的正确方法?)。 a screenshot from IDE集合和迭代器接口作为内部类的实现
public class ArrayCollection<T> implements Collection<T> {
private T[] m = (T[])new Object[10];
然而,当我在一个Iterator接口实现下一个()的方法我不断收到不兼容类型的错误。但是,如果创建一个ArrayIterator,则非泛型类编译器不再有数组类型转换的问题。 an error screenshot from IDE
private class ArrayIterator<T> implements Iterator<T> {
private int cursor = 0;
@Override
public boolean hasNext() {
return this.cursor >= ArrayCollection.this.size();
}
@Override
public T next() {
return ArrayCollection.this.m[cursor++];
}
}
所以,我有几个问题:
为什么编译器可以定义T []数组米型,如果我做一个ArrayIterator非通用?
是否只有内部类实现/扩展通用接口/类可以是非泛型的?
你可以在这里分享代码吗? – Mureinik
添加代码。还有IDE的链接截图。我的堆栈溢出评级太低,无法将图像直接添加到问题中。 – user2992672
绝不添加图片,添加代码 –