如何在Kotlin中创建匿名接口实例?
我有一个第三方Java库,该对象的接口如下:
public interface Handler<C> { void call(C context) throws Exception;
}
我如何像Java匿名类一样在Kotlin中简洁地实现它:
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"
回答:
假设接口只有一种方法,则可以使用SAM
val handler = Handler<String> { println("Hello: $it")}
如果您有一个接受处理程序的方法,那么您甚至可以忽略类型参数:
fun acceptHandler(handler:Handler<String>){}acceptHandler(Handler { println("Hello: $it")})
acceptHandler({ println("Hello: $it")})
acceptHandler { println("Hello: $it")}
如果接口具有多个方法,则语法会更加冗长:
val handler = object: Handler2<String> { override fun call(context: String?) { println("Call: $context") }
override fun run(context: String?) { println("Run: $context") }
}
以上是 如何在Kotlin中创建匿名接口实例? 的全部内容, 来源链接: utcz.com/qa/402092.html