【发布时间】:2019-09-11 11:10:34
【问题描述】:
Scala 如何显示一个模棱两可的引用错误,其中两个替代方案具有相同的签名?如何克服它?
代码:
import org.apache.kafka.streams.test
val stringSerializer = new StringSerializer
val stringFactory: ConsumerRecordFactory[String, String] =
new ConsumerRecordFactory[String, String](
eventTopic, stringSerializer, stringSerializer)
val testKey : String = ""
val testVal : String = ""
val recordString : ConsumerRecord[Array[Byte], Array[Byte]] =
stringFactory.create(testKey, testVal)
ambiguous reference to overloaded definition,
[error] both method create in class ConsumerRecordFactory of type (x$1: String, x$2: String)org.apache.kafka.clients.consumer.ConsumerRecord[Array[Byte],Array[Byte]]
[error] and method create in class ConsumerRecordFactory of type (x$1: String, x$2: String)org.apache.kafka.clients.consumer.ConsumerRecord[Array[Byte],Array[Byte]]
[error] match argument types (String,String) and expected result type org.apache.kafka.clients.consumer.ConsumerRecord[Array[Byte],Array[Byte]]
[error] val recordString : ConsumerRecord[Array[Byte], Array[Byte]] = stringFactory.create(testKey, testVal)
如您所见,这两种方法具有相同的签名。使用其他类型的 CustomerFactory 时不会发生这种情况,即我为其具有自定义序列化程序的自定义案例类类型(而不是提供的 StringSerializer)。
【问题讨论】:
标签: scala apache-kafka apache-kafka-streams scala-java-interop