2015-05-02 68 views
0

我想用一个队列来存储一定数量的数据,我希望能够遍历它。我用特定的类型创建了一个新的队列,并且我在迭代器中遇到问题。每当我调用iterator.next()我有一个类型不匹配。 “无法从void转换为motionEvent”。 motionEvent是我正在存储的类型。任何帮助将非常感激。这是代码片段。与Java的队列迭代器

Queue<motionEvent> queue = new LinkedList<motionEvent>(); 

    .... 

    Iterator it = (Iterator) queue.iterator(); 

    for(int i = 0; i < 5; i++) 
    { 
     motionEvent temp = it.next(); 
    //THis is where I am having the problem with mismatch type 

    } 

这里是motionEvent类别:

public class motionEvent 
{ 
private long time; 
private int positionX; 
private int positionY; 

public motionEvent() 
{ 
    time = 0; 
    positionX = 0; 
    positionY = 0; 
} 

public motionEvent(long time_in, int positionX_in, int positionY_in) 
{ 
    time = time_in; 

    positionX = positionX_in; 
    positionY = positionY_in; 
} 

public long getTime() 
{ 
    return time; 
} 

public int[] getPosition() 
{ 
    int[] temp = new int[]{positionX, positionY}; 
    return temp; 
} 


} 
+0

为什么你投'queue.iterator()'(返回迭代器我猜的)到'Iterator'?这会导致it.next()不是'motionEvent'类型(但我不确定它为什么返回'Void'而不是Object)。 – eckes

+0

你是在说运行时还是编译时问题?如果它是运行时问题,则需要显示如何实例化和添加元素。 – eckes

+0

这是一个编译问题。 – Cirrith

回答

0

你不应该强制转换为原始类型:

Iterator<MotionEvent> it = queue.iterator(); 
+0

我试过这个,我得到一个“未解决的编译问题: \t HTMLDocument.Iterator类型不是通用的;它不能用参数”参数化错误。有什么我必须添加到motionEvent类? – Cirrith

+0

Nvm,这个工程。我导入了错误的Iterator。谢谢! – Cirrith

0

井通常是不同类型的物品不能直接通过一个到另一个分配。空洞也不能分配,请尝试找到迭代的方法。另外你的motionEvent是它自己的类型,所以它必须间接地添加一个set或者convertion。

+0

虽然它不是一个不同的类型。该队列包含motionEvents,我正试图提出一个motionEvent。 – Cirrith

+0

事件虽然队列包含运动事件,但迭代器如异常报告所述是无效的。 – btgui

+0

使用'Iterator ',那么它应该工作。 – eckes