J'ai une bibliothèque Java tierce avec un objet avec une interface comme celle-ci:
public interface Handler<C> {
void call(C context) throws Exception;
}
Comment puis-je l'implémenter de manière concise dans Kotlin similaire à la classe anonyme Java comme ceci:
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"
acceptHandler { println("Hello: $it")}
fonctionnerait également dans la plupart des casfun interface
.J'ai eu un cas où je ne voulais pas créer de var pour cela mais le faire en ligne. La façon dont je l'ai réalisé est
funA(object: InterfaceListener { override fun OnMethod1() {} override fun OnMethod2() {} })
la source
val obj = object : MyInterface { override fun function1(arg:Int) { ... } override fun function12(arg:Int,arg:Int) { ... } }
la source
La réponse la plus simple est probablement le lambda de Kotlin:
val handler = Handler<MyContext> { println("Hello world") } handler.call(myContext) // Prints "Hello world"
la source