Tenho uma biblioteca Java de terceiros que possui um objeto com interface como esta:
public interface Handler<C> {
void call(C context) throws Exception;
}
Como posso implementá-lo de forma concisa em Kotlin semelhante à classe anônima Java desta forma:
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")}
também funcionaria na maioria dos casosfun interface
.Tive um caso em que não queria criar uma var para ele, mas fazê-lo embutido. A forma como consegui isso é
funA(object: InterfaceListener { override fun OnMethod1() {} override fun OnMethod2() {} })
fonte
val obj = object : MyInterface { override fun function1(arg:Int) { ... } override fun function12(arg:Int,arg:Int) { ... } }
fonte
A resposta mais simples provavelmente é o lambda de Kotlin:
val handler = Handler<MyContext> { println("Hello world") } handler.call(myContext) // Prints "Hello world"
fonte