问题描述
我有一个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]] = {
我该如何解决?
1楼
为什么将V
更改为C
?
您的替代方法应为
override def iterator(): Iterator[Product2[K, V]] = {
partitionedIterator.flatMap(pair => pair._2)
如果你想使用C
,那么你就应该实现Writer
与C
为,
with Writer[K, C] {
2楼
尝试将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)
}
}
上面是修改后的代码。