是否可以使用重载方法,每个方法都接受一个函数,而不是其他任何方法,例如
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }
在Scala中,这是不可能的,因为函数是Function0
的实例,并且由于擦除这些方法无法消除歧义。这是Kotlin中的相同案例,如果有,是否有解决方法?
答案 0 :(得分:1)
您可以使用[platformName]
注释来解决Kotlin中的签名冲突:
import kotlin.platform.*
class A
class B
[platformName("foo1")]
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }
查看文档here