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

时间:2015-08-08 10:58:23

标签: java scala

我的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中的方法迭代器   type()Iterator [Product2 [K,V]];方法迭代器具有不兼容的类型   override def iterator():Iterator [Product2 [K,C]] = {

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

为什么将V更改为C

你的覆盖方法应该是,

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

如果您想使用C,则应使用Writer实施C

with Writer[K, C] {

答案 1 :(得分: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)
  }
}

以上将是修改后的代码。