从嵌套类中调用iterator方法

时间:2015-12-15 21:12:33

标签: java methods iterator nested

这是我的一个类中的嵌套类。如何从名为remove的新方法调用public Cards dealOut()方法?它是否必须在嵌套类中,或者是否有办法在它之外进行?

    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);

    } 

}

2 个答案:

答案 0 :(得分:0)

通常的范例是让包含D_iterator的类实现Iterable<Cards>,这意味着它将有iterator()方法返回D_iterator的实例。

该外部类的用户将调用iterator()来获取Iterator并调用其方法。

P.S。您应该修复next()方法,因为您永远不会增加pos。它将始终返回deckOfCards.get(1)

答案 1 :(得分:0)

内部remove()方法不是静态的(并且不能出于各种原因),因此您需要一个对象引用才能调用它。您应该将“删除逻辑”移动到外部类并从迭代器中调用它。