在Kotlin中接收高阶函数的重载方法

是否有可能有重载的方法,每个接受一个功能,没有别的,例如

fun foo(a: () -> A) { } fun foo(b: () -> B) { } 

在Scala中,这是不可能的,因为这些函数会解析Function0实例,并且由于擦除,这些方法不能被消除。 Kotlin的情况是否如此?如果有的话,是否有解决方法?

您可以使用[platformName]注释解决Kotlin中的签名冲突:

 import kotlin.platform.* class A class B [platformName("foo1")] fun foo(a: () -> A) { } fun foo(b: () -> B) { } 

看到这里的文档