【发布时间】:2018-01-01 07:46:46
【问题描述】:
我正在尝试从 Kotlin 调用以下 Java 方法:
KStream<K, V>[] branch(final Predicate<? super K, ? super V>... predicates);
此方法是Kafka Streams API 的一部分。
按照the Kotlin docs,我尝试调用它的方式是定义一个扩展方法:
fun <K, V> KStream<K, V>.kbranch(vararg predicates: (K, V) -> Boolean):
Array<KStream<K, V>> = this.branch(*predicates)
问题是它无法编译。我收到以下错误:
Type mismatch: inferred type is Array<out (K, V) -> Boolean>
but Array<(out) Predicate<in K!, in V!>!>! was expected
类似的KStream#filter 方法接受单个Predicate 作为参数,在传递具有(K, V) -> Boolean 相同签名的Kotlin lambda 时可以毫无问题地调用。
有什么想法吗?我见过this similar question,但这里的某些东西似乎有些微妙的不同,我无法确定它。
【问题讨论】:
标签: kotlin apache-kafka-streams