2016-05-18 86 views
1

参数我想延长在斯卡拉下面的Java类用“?”覆盖方法在斯卡拉

https://kafka.apache.org/082/javadoc/org/apache/kafka/common/serialization/Serializer.html#configure(java.util.Map,布尔)

到目前为止,我已经写的代码是

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

我试过搜索,但我无法弄清楚如何覆盖配置方法,因为“?”在java中定义

回答

2

注意,在Serializer接口中你有一个java.util.Map,而不是scala.collection.Map。 您还需要定义关闭。 因此,你应该可以解决你的代码,这样是这样的:

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 
    } 
} 

请注意,这是不可能的可以定义一个更精确的类型来CONFIGS地图右边的参数,因为它是什么?在它的java定义中,我们应该接受java.util.Map,它的值可以是任何东西(_ scala中的类型)。