参数化类型的Java迭代器
我正在尝试为ArrayList类型编写一个itertor,其中Number是一个类 我几乎可以做到,但我会出错: 这是类定义参数化类型的Java迭代器,java,arraylist,iterator,Java,Arraylist,Iterator,我正在尝试为ArrayList类型编写一个itertor,其中Number是一个类 我几乎可以做到,但我会出错: 这是类定义 public class History implements Iterable<ArrayList<Number>> { 公共类历史实现了Iterable{ 这是我希望迭代的类型的定义: private ArrayList<Number> spins = new ArrayList<Number>(); privat
public class History implements Iterable<ArrayList<Number>> {
公共类历史实现了Iterable{
这是我希望迭代的类型的定义:
private ArrayList<Number> spins = new ArrayList<Number>();
private ArrayList spins=new ArrayList();
…下面是迭代器函数:
@Override
public Iterator<ArrayList<Number>> iterator() {
Iterator<ArrayList<Number>> it = new Iterator<ArrayList<Number>>() {
private int currentIndex = 0;
@Override
public boolean hasNext() {
return currentIndex < gethistorySize() && spins.get(currentIndex) != null;
}
@Override
public ArrayList<Number> next() {
return spins.get(currentIndex++); // ** ERROR **
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
return it;
}
@覆盖
公共迭代器迭代器(){
迭代器it=新迭代器(){
私有int currentIndex=0;
@凌驾
公共布尔hasNext(){
返回currentIndex
我在标记为**error的行中得到一个错误**
我得到的错误是:
这条线上有多个标记
-表达式的类型必须是数组类型,但已解析为ArrayLisy
-类型不匹配:无法从数字转换为ArrayList
我不太确定该在这里归还什么
有人能帮忙吗
Thx为了使
自旋.get(currentIndex++)
返回数组列表
,自旋的类型必须是列表
,而不是数组列表
如果旋转的类型是正确的,那么您可能需要实现一个迭代器,而不是迭代器(并且历史应该实现Iterable
)。更改
@Override
public ArrayList<Number> next() {
return spins.get(currentIndex++); // ** ERROR **
}
返回类型错误,因此出现编译错误。
当您调用next()时
method,您想在这一行迭代一个ArrayList
多个标记中的每个数字对象-表达式类型必须是数组类型,但它解决了ArrayList类型不匹配:无法从数字转换到ArrayList您能添加错误消息吗?这样有相同问题的人就能够找到您的问题和po可能的答案?如上所述,抱歉-并且,请注意,这不是一个运行时错误,而是一个“屏幕错误”,因此无法向您解释-我将尝试这些建议-仅供参考-删除原始错误,但给出一个(类似)更改后的文件上出现错误line@Graham请尝试以下示例:非常感谢-更改类型以解决此问题。
@Override
public Number next() {
return spins.get(currentIndex++); // ** ERROR **
}