В Scala иногда требуется указать точные привязки типов, потому что вывод типов не будет работать так, как вы привыкли в Scala. Когда вы обнаружите эти ошибки ввода, вы можете применить практическое правило - разделять строки новыми явно набранными значениями, пока не найдете место, где вам нужно указать тип.
Похожие проблемы и решения:
The compiler need some help to infer the correct type for the aggregator parameter.
To make it compile you can try:
val store: Materialized[String, String, KeyValueStore[Bytes, Array[Byte]]] = ???
private def save(pea: KStream[String, String]): Unit = {
val aggregator: Aggregator[String, String, String] = (_, _, value: String) => value
pea
.groupByKey()
.aggregate(() => """{folder: ""}""",
aggregator,
store)
}
из здесь .
И здесь - это еще один из Java, который иллюстрирует другой вид строгой типизации также в Kafka Streams:
Try moving generic types specification after as method:
val state: KTable[String, String] = builder
.table[String, String]("BARY-PATH", Materialized.as[String, String,KeyValueStore[org.apache.kafka.common.utils.Bytes, Array[Byte]]]("PATH-STORE"))
Как видно из сигнатуры Java, для методов stati c следует указывать типы generi c для метода, а не для класса.
You может найти много других примеров, даже за пределами Kafka Streams, о необходимости явной типизации в Scala.