我有以下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有关。 –