2016-05-18 13 views
1

Ich versuche, die folgende Java-Klasse in ScalaMethoden mit "?" Überschreiben Parameter in scala

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

Bisher ist der Code, den ich geschrieben zu verlängern haben, ist

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]() 
    } 
} 

Aber das gibt mir Zeit Fehler kompilieren method configure overrides nothing

Ich habe versucht zu suchen, aber ich bin nicht in der Lage, herauszufinden, wie die confirmate-Methode wegen der "?" in der Java-Definition

Antwort

2

Beachten Sie, dass Sie in der Serializer-Schnittstelle haben Sie eine java.util.Map, nicht scala.collection.Map. Auch müssen Sie schließen definieren. So sollten Sie Ihren Code zu beheben, so dass so:

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

Beachten Sie, dass es nicht möglich ist, möglich, eine präzisere Art zu definieren Karte rechts Parameter configs, weil es ist? In seiner Java-Definition sollten wir daher java.util.Map akzeptieren, dessen Werte alles Mögliche sein können (_ type in scala).

Verwandte Themen