我有一个第三方 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"
原文由 Peter Lamberg 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设接口只有一个方法,您可以使用 SAM 。
从 1.4 版开始,Kotlin 支持 SAM 用于 Kotlin 中定义的接口。这需要在
interface
关键字前加上fun
如果你有一个接受处理程序的方法,那么你甚至可以省略类型参数:
如果接口有多个方法,则语法会更冗长: