如何在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中定义的接口的不同用法的讨论 。