2016-05-18 125 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中的類型)。