我正在尝试在Scala中扩展以下java类
到目前为止,我编写的代码是
package com.abhi
import org.apache.kafka.common.serialization.Serializer
import scala.runtime.ObjectRef
class PersonSerializer extends Serializer[Person] {
override def configure(configs: Map[String, ObjectRef], isKey: Boolean) : Unit = {
}
override def serialize(topic: String, p : Person) : Array[Byte] = {
Array[Byte]()
}
}
但是这给了我编译时错误method configure overrides nothing
我尝试过搜索,但由于“?”我无法弄清楚如何覆盖configure方法在java定义中
答案 0 :(得分:2)
请注意,在Serializer界面中,您有一个java.util.Map,而不是scala.collection.Map。 您还需要定义close。 因此,您应该修复您的代码,如下所示:
class PersonSerializer extends Serializer[Person] {
override def configure(configs: java.util.Map[String, _], isKey: Boolean) : Unit = {
}
override def serialize(topic: String, p : Person) : Array[Byte] = {
Array[Byte]()
}
def close() {
//do something
}
}
请注意,无法定义更精确的类型来配置Map右参数,因为它是?在它的java定义中,因此我们应该接受java.util.Map,其值可以是任何值(在scala中为_ type)。