首页 文章

Scala - 覆盖Scala类中的Java接口方法

提问于
浏览
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)
  }
}

但是当我尝试编译这段代码时,我收到一个错误:

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

我该如何解决?

2 回答

  • 2

    为什么要将 V 更改为 C

    你的覆盖方法应该是,

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

    如果你想使用 C ,那么你应该用 C 实现 Writer

    with Writer[K, C] {
    
  • 0

    尝试使用java.util.Iterator替换scala类中的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)
      }
    }
    

    以上将是修改后的代码 .

相关问题