2015-12-15 25 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()方法不是静态的(不能因为各种原因),所以你需要一个对象引用来调用它。您应该将“删除逻辑”移到外部类,并从迭代器中调用它。