如何在Kotlin中创建一个匿名类的抽象类的实例?
假设KeyAdapter
是一个抽象类,有几个可以被覆盖的方法。
在Java中我可以这样做:
KeyListener keyListener = new KeyAdapter() { @Override public void keyPressed(KeyEvent keyEvent) { // ... } };
如何在Kotlin中做同样的事情?
从Google上的第一个命中 :
window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e : MouseEvent) { // ... }
适用于您的问题:
val keyListener = object : KeyAdapter() { override fun keyPressed(keyEvent : KeyEvent) { // ... }
正如Peter Lamberg所指出的那样 – 如果匿名类实际上是一个function接口( 即不是抽象类 )的实现,则可以使用SAM转换来简化这个语句:
val keyListener = KeyAdapter { keyEvent -> // ... }
请注意关于在Java和Kotlin中定义的接口的不同用法的讨论 。