当前位置: 代码迷 >> java >> Scala-在Scala类中重写Java接口方法
  详细解决方案

Scala-在Scala类中重写Java接口方法

热度:143   发布时间:2023-07-26 13:52:18.0

我有一个Java接口Writer定义如下:

public interface Writer<K, V> {

    Iterator<Product2<K, V>> iterator ();
}

我正在尝试在Scala类ExternalWriter中实现此接口,如下所示:

private class ExternalWriter[K, V, C]
  extends Logging
  with Writer[K, V] {

    override def iterator(): Iterator[Product2[K, C]] = {
        partitionedIterator.flatMap(pair => pair._2)
  }
}

但是,当我尝试编译此代码时,出现错误:

错误:类型为()Iterator [Product2 [K,V]];的特征SortShuffleFileWriter中的重写方法迭代器; 方法迭代器具有不兼容的类型重写def iterator():Iterator [Product2 [K,C]] = {

我该如何解决?

为什么将V更改为C

您的替代方法应为

override def iterator(): Iterator[Product2[K, V]] = {
    partitionedIterator.flatMap(pair => pair._2)

如果你想使用C ,那么你就应该实现WriterC为,

with Writer[K, C] {

尝试将scala类中的Iterator替换为java.util.Iterator,因为scala Iterator和Java Iterator是不同的。

private class ExternalWriter[K, V, C]
  extends Logging
  with Writer[K, V] {

    override def iterator(): java.util.Iterator[Product2[K, C]] = {
        partitionedIterator.flatMap(pair => pair._2)
  }
}

上面是修改后的代码。

  相关解决方案