interfaz data java abstract-class kotlin

java - data - interfaz kotlin



¿Cómo crear una instancia de clase anónima de clase abstracta en Kotlin? (1)

Supongamos que KeyAdapter es una clase abstracta con varios métodos que se pueden anular.

En java puedo hacer:

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

¿Cómo hacer lo mismo en Kotlin?


De la documentación oficial en idioma Kotlin y uno de los primeros éxitos en Google:

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

Aplicado a su problema a la mano:

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

Como señala Peter Lamberg: si la clase anónima es en realidad una implementación de una interfaz funcional ( es decir, no de una clase abstracta ), las conversiones de SAM se pueden usar para simplificar aún más esta afirmación:

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

Tenga en cuenta también esta discusión sobre el uso diferente de las interfaces definidas en Java y Kotlin.