Как создать экземпляр анонимного класса абстрактного класса в Котлине?

Предположим, что KeyAdapter является абстрактным классом с несколькими методами, которые можно переопределить.

В java я могу сделать:

 KeyListener keyListener = new KeyAdapter() { @Override public void keyPressed(KeyEvent keyEvent) { // ... } }; 

Как сделать то же самое в Котлине?

С первого удара в Google :

 window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e : MouseEvent) { // ... } 

Применительно к вашей проблеме:

 val keyListener = object : KeyAdapter() { override fun keyPressed(keyEvent : KeyEvent) { // ... } 

Как отметил Питер Ламберг, если анонимный класс фактически является реализацией функционального интерфейса ( т. Е. Не абстрактного класса ), SAM Conversions могут использоваться для упрощения этого утверждения еще дальше:

 val keyListener = KeyAdapter { keyEvent -> // ... } 

Также обратите внимание на эту дискуссию о различном использовании интерфейсов, определенных в Java и Kotlin.