Tengo una biblioteca Java de terceros que tiene un objeto con una interfaz como esta:
public interface Handler<C> {
void call(C context) throws Exception;
}
¿Cómo puedo implementarlo de manera concisa en Kotlin similar a la clase anónima de Java como esta?
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")}
también funcionaría en la mayoría de los casosfun interface
.Tuve un caso en el que no quería crear una var para ello, sino hacerlo en línea. La forma en que lo logré es
funA(object: InterfaceListener { override fun OnMethod1() {} override fun OnMethod2() {} })
fuente
val obj = object : MyInterface { override fun function1(arg:Int) { ... } override fun function12(arg:Int,arg:Int) { ... } }
fuente
La respuesta más simple probablemente sea la lambda de Kotlin:
val handler = Handler<MyContext> { println("Hello world") } handler.call(myContext) // Prints "Hello world"
fuente