kotlin中的代码相当于什么,我尝试的似乎没有任何效果:
public interface AnInterface {
void doSmth(MyClass inst, int num);
}
INIT:
AnInterface impl = (inst, num) -> {
//...
}
答案 0 :(得分:14)
如果AnInterface
是Java,则可以使用SAM conversion:
val impl = AnInterface { inst, num ->
//...
}
否则,如果界面是Kotlin ......
interface AnInterface {
fun doSmth(inst: MyClass, num: Int)
}
...您可以使用object
语法匿名实现它:
val impl = object : AnInterface {
override fun doSmth(inst:, num: Int) {
//...
}
}
答案 1 :(得分:12)
如果您将接口及其实现重写为Kotlin,那么您应该删除接口并使用功能类型:
val impl: (MyClass, Int) -> Unit = { inst, num -> ... }
答案 2 :(得分:2)
您可以使用object expression
所以它看起来像这样:
val impl = object : AnInterface {
override fun(doSmth: Any, num: Int) {
TODO()
}
}
答案 3 :(得分:0)
你也可以做这样的事情,使用@lambda 标签
interface AnInterface {
fun doSmth(inst: MyClass, num: Int)
}
val impl = AnInterface lambda@{inst, num ->
//..
}