【问题标题】:Type mismatch with Iterator interface类型与迭代器接口不匹配
【发布时间】:2014-09-22 14:06:00
【问题描述】:

我的界面有问题。我有一个这样的迭代器接口:

package com.wrox.algorithms.iteration;
import com.wrox.algorithms.lists.IteratorOutOfBoundsException;

public interface Iterator {
    public void first();
    public void last();
    public void isDone();
    public void next();
    public Object current() throws IteratorOutOfBoundsException;
}

之后我创建测试类并在一个空列表中测试迭代:

package com.wrox.algorithms.lists;
import com.wrox.algorithms.iteration.Iterator;

.....

public void testForwardIteration() {
    Lists list = createList();

    Iterator iterator = list.iterator(); // <- ERROR
}

我收到此错误:

类型不匹配:无法从 java.util.Iterator 转换为 com.wrox.algorithms.iteration.Iterator

你知道我的错误在哪里吗?感谢您的支持!

【问题讨论】:

  • createList() 可能返回实现java.util.IteratorList。我们需要看到这一点才能确定。
  • 谢谢朋友的回答!
  • 我还有两个接口:Lists 和 Iterable。 Iterable 只包含一个 iterator() 方法。我忘了在列表中导入这个接口。如果你有课外时间,你能给我解释一下吗?为什么机器给我这个不匹配。我发现了错误,但我不明白这一点。感谢您的宝贵时间!

标签: java interface iterator type-mismatch


【解决方案1】:

如果两个人的名字相同,那并不意味着你可以假装他们是同一个人。他们仍然是两个不同的人。你可以和他们成为朋友,但如果你把他们混在一起,他们会生你的气。

同样,如果两个接口被命名为Iterator,这并不意味着你可以假装它们是同一个接口。 java.util.Iteratorcom.wrox.algorithms.iteration.Iterator 是两个独立的接口。你可以同时使用它们,但是如果你把它们混在一起,编译器就会对你大喊大叫。

【讨论】:

  • 完美的解释!感谢你 !现在我更好地理解了这个问题:)
【解决方案2】:

list.iterator() 返回 java.util.Iterator,而不是 com.wrox.algorithms.iteration.Iterator

编辑:刚刚注意到您有一个“列表”而不是“列表”。您还需要来自 java.util.List 的列表。不要创建自己的列表/列表

【讨论】:

  • 是的,我发现了问题。谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多