【问题标题】:Scala and util.Iterator[_] [duplicate]Scala 和 util.Iterator[_] [重复]
【发布时间】:2014-03-17 06:26:15
【问题描述】:

我正在使用 scala 中的 java 库,我需要实现一个接口,除其他外,我需要实现我实现 Java 的 Iterable 接口。

当我尝试使用或不使用JavaConversions 来实现它时,它告诉我我要覆盖的方法 (iterator(): java.util.Iterator) 的类型错误,即使该方法的类型是 java.util.Iterator

顺便说一句,这可能是因为接口要求我返回一个未指定类型的迭代器吗?

【问题讨论】:

  • 查看即兴(和 Daniel Sobral)对链接问题的回答。

标签: java scala types interface typeerror


【解决方案1】:

REPL 中的以下工作:

import java.lang.Iterable
import java.util.Iterator

class A extends Iterable[String] {
    override def iterator(): Iterator[String] = null
}

请注意,iterator() 需要返回 Iterator,而不是 Iterable,而且令人困惑的是,Iterable 在包 java.lang 中,而 Iteratorjava.util 中。

【讨论】:

  • 这不是问题。父类指定一个 Untyped 迭代器,(实际上是Iterator<?>)。如果输入了迭代器,我就不会遇到问题。作为参考,继承链如下所示: Java interface Iterable -> Java interface Component extends Iterable (No Type) -> Scala class ScalaComponent extends零件。因此,ScalaComponent 有override def iterator(): util.Iterator[_]。这会导致编译器错误。
猜你喜欢
  • 2018-03-19
  • 2012-12-23
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多