简单的Q Iterator <对象e =“”>抽象类</object>

时间:2013-04-15 04:32:55

标签: java interface casting iterator abstract-class

嗨,你们明天可以告诉他们吗?

那么, 我不使用java.util.iterator来创建我的迭代器接口,只需创建我自己的

我有2个迭代器:AccountIterator / FileIterator,我的目标是在“deafult”包中将抽象对象“Account”和对象“File”迭代到我的Main类

(还有2个扩展到AbstractAccount.class(BasicClass.class / PremiumClass.class,而AbstractAccount.class实现Account.interface)

有我的Iterator界面:

package cs;

public interface Iterator<E> {
    public void init() ;
    public boolean hasNext();
    public E next();
}

有我的帐户迭代器

http://i.stack.imgur.com/w0avp.png

我不能使用演员,任何想法 Cumps和抱歉英语不好

2 个答案:

答案 0 :(得分:1)

您已使用E类型对类进行参数化,但您的帐户数组的类型为Accountaccounts[index]会返回Account而非E

您可能打算实施Iterator<Account>。将班级签名更改为此...

public class AccountIterator<E> implements Iterator<Account>

然后Impl会处理你的通用偏好,它会有效。

class MyIter implements Iterator<String>
{
    String [] arr = new String[10];

    public void init()
    {
    }

    public boolean hasNext()
    {
        return false;
    }

    public String next()
    {
        return arr[1];
    }
}

答案 1 :(得分:0)

只需修改类标题即可指定对象类型。

使用

public class AccountIterator implements Iterator<Account>

而非一般

public class AccountIterator<E> implements Iterator<E>

您必须将E更改为帐户。