我有一个第三方Java库,其对象具有如下界面:
public interface Handler<C> {
void call(C context) throws Exception;
}
我怎样才能在Kotlin中简洁地实现它,就像这样的Java匿名类:
Handler<MyContext> handler = new Handler<MyContext> {
@Override
public void call(MyContext context) throws Exception {
System.out.println("Hello world");
}
}
handler.call(myContext) // Prints "Hello world"
3 回答
假设界面只有一个方法,你可以使用SAM
如果您有一个接受处理程序的方法,那么您甚至可以省略类型参数:
如果接口有多个方法,则语法有点冗长:
最简单的答案可能是Kotlin的lambda:
我有一个案例,我不想为它创建一个var,但它是内联的 . 我实现它的方式是