这里有两个函数,一个在kotlin.kt:
interface TraitA
fun <T : TraitA> foo(a: Any, f: (T) -> Unit) {
TODO()
}
Run Code Online (Sandbox Code Playgroud)
另一个适配器函数 Scala.scala
import KotlinKt.foo
object Scala {
def adapter[E <: TraitA](f: (E) => Unit): Unit = {
foo[E](None, { a =>
// Do something
kotlin.Unit.INSTANCE
})
}
}
Run Code Online (Sandbox Code Playgroud)
直到这一刻,它编译。但是当我在 Kotlin 中重载这个函数时:
interface TraitA
fun <T : TraitA> foo(f: (T) -> Unit) {
TODO()
}
fun <T : TraitA> foo(a: Any, f: (T) -> Unit) {
TODO()
}
Run Code Online (Sandbox Code Playgroud)
Scala 无法编译并出现以下错误:
> Task :scala:compileScala …Run Code Online (Sandbox Code Playgroud)