2015-05-02 107 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