簡體   English   中英

Scala-在Scala類中重寫Java接口方法

[英]Scala - Overriding a Java interface method in a Scala class

我有一個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)
  }
}

上面是修改后的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM