2015-12-15 57 views
0

這是我的一個類中的嵌套類。我怎樣才能從一個叫做public Cards dealOut()的新方法調用remove方法?它是否必須在嵌套類中,還是有辦法在它之外進行操作?從嵌套類中調用迭代器方法

public class D_iterator <Cards> implements Iterator <Cards> { 
    int pos = 0; 
    @Override 
    public boolean hasNext() { 
     if (pos < deckOfCards.size()) { 
      return true; 
     } 
     return false;   
    } 

    @Override 
    public Cards next() { 
     return (Cards) deckOfCards.get(pos+1); 
    } 


    @Override 
    public void remove(){ 
     deckOfCards.remove(pos); 

    } 

} 
+0

你想知道你是否可以調用它嵌套在類中的方法嗎? –

+1

此迭代器不起作用,因爲當您調用next()(或其他)時,不會提前調用pos。你的意思是'deckOfCards.get(pos ++);'? –

+0

是的,它嵌套在一個類中。我想在單獨的方法中調用remove方法,該方法仍然保留在整個類中,但不在此嵌套類中。這可能嗎? –

回答

0

通常的範例是具有包含D_iterator實現Iterable<Cards>的類,這意味着將有一個iterator()方法返回的D_iterator一個實例。

該外部類的用戶將調用iterator()來獲取Iterator並調用其方法。

P.S.你應該修復你的next()方法,因爲你永遠不會增加pos。它將始終返回deckOfCards.get(1)

0

內部remove()方法不是靜態的(不能因爲各種原因),所以你需要一個對象引用來調用它。您應該將「刪除邏輯」移到外部類,並從迭代器中調用它。