Saya memiliki perpustakaan Java pihak ketiga yang objek dengan antarmuka seperti ini:
public interface Handler<C> {
void call(C context) throws Exception;
}
Bagaimana saya bisa mengimplementasikannya secara ringkas di Kotlin yang mirip dengan kelas anonim Java seperti ini:
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")}
juga akan bekerja dalam banyak kasusfun interface
.Saya memiliki kasus di mana saya tidak ingin membuat var untuk itu tetapi melakukannya secara inline. Cara saya mencapainya adalah
funA(object: InterfaceListener { override fun OnMethod1() {} override fun OnMethod2() {} })
sumber
val obj = object : MyInterface { override fun function1(arg:Int) { ... } override fun function12(arg:Int,arg:Int) { ... } }
sumber
Jawaban paling sederhana mungkin adalah lambda Kotlin:
val handler = Handler<MyContext> { println("Hello world") } handler.call(myContext) // Prints "Hello world"
sumber