kotlin 中接口的 Lambda 实现

2022-09-01 12:51:43

相当于kotlin中的代码,似乎没有什么比我尝试的更有效:

public interface AnInterface {
    void doSmth(MyClass inst, int num);
}

初始化:

AnInterface impl = (inst, num) -> {
    //...
}

答案 1

如果 是 Java,则可以使用 SAM 转换AnInterface

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) {
        //...
    }
}

答案 2

如果您要将接口及其实现都重写为 Kotlin,那么您应该删除该接口并使用函数类型:

val impl: (MyClass, Int) -> Unit = { inst, num -> ... }