java - 抽象类的简单Q迭代器<Object E>

标签 java interface casting iterator abstract-class

大家好,明天之前可以告诉我吗?

嗯, 我不使用 java.util.iterator 来创建我的迭代器接口(interface),只是创建我自己的所以

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

(还有2个扩展为AbstractAccount.class(BasicClass.class/PremiumClass.class,并且AbstractAccount.class实现了Account.interface)

这是我的迭代器接口(interface):

package cs;

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

这是我的帐户迭代器

/image/w0avp.png

我不能使用类型转换,有什么想法吗 抱歉,英语不好

最佳答案

您已使用类型 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];
    }
}

关于java - 抽象类的简单Q迭代器<Object E>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007688/

相关文章:

java - Eclipse Juno 中外部配置文件的 Checkstyle

java - Aerospike TTL 监听器

c++ - 是否可以在结构之外编写自动转换运算符?

c - 为什么这个函数返回 0 而不是 double?

java - 通过 "-XX:PermSize=192m -XX:MaxPermSize=2g -Xms2g -Xmx2g"在 linux 中通过终端增加内存

java - Thread.sleep() 的精确替代方案

c++ - PIMPL 问题 : How to have multiple interfaces to the impl w/o code duplication

interface - 如何使用 F# 在记录结构上定义 fmap

java - AP CS 实践 - OOP

c# - 哪个更好 - (int)value 或 value as int?