我有以下Scala的特點,我想繼承:繼承Scala特性,在Java
trait StreamTableSink[T] extends TableSink[T] {
/** Emits the DataStream. */
def emitDataStream(dataStream: DataStream[T]): Unit
}
延伸:
trait TableSink[T] {
private var fieldNames: Option[Array[String]] = None
private var fieldTypes: Option[Array[TypeInformation[_]]] = None
...
}
但是,當我繼承它在Java中是這樣的:
public abstract class KafkaTableSink implements StreamTableSink<Row> {
...
}
我收到以下錯誤:
Error:(29, 8) java: kafka.KafkaAvroTableSink09 is not abstract and does not override abstract method TableSink$$fieldTypes_$eq(scala.Option<typeinfo.TypeInformation<?>[]>) in sinks.TableSink
其中KafkaAvroTableSink09
繼承可能會產生KafkaTableSink
你可以只使'fieldNames'和'fieldTypes' vals'而不是'vars'。 – marstran
這個問題是關於'def's而不是'var's,但問題和解決方案是一樣的。 –
@AlexeyRomanov我不認爲這是你提到的問題的重複。我對「def」沒有任何問題,我成功實現了抽象方法。我有一個與fieldTypes_ $ eq方法有關的問題,它似乎與「fieldTypes」var有關。 –