Angenommen, dies KeyAdapter
ist eine abstrakte Klasse mit mehreren Methoden, die überschrieben werden können.
In Java kann ich:
KeyListener keyListener = new KeyAdapter() {
@Override public void keyPressed(KeyEvent keyEvent) {
// ...
}
};
Wie geht das in Kotlin?
java
abstract-class
kotlin
Tvaroh
quelle
quelle
val k: KeyAdapter = KeyAdapter { println("Hello, world!") }
nicht funktioniert. (Allerdings habe ich nach der Lambda-Syntax gesucht.) Ich denke, ich werde nach einer anderen Frage mit genau diesem Titel suchen, aber nach einer besser formulierten Frage, und diese mit einem Kommentar verknüpfen ...Antworten:
Aus der offiziellen Kotlin-Sprachdokumentation :
Auf Ihr Problem angewendet:
Wie Peter Lamberg betont hat - wenn die anonyme Klasse tatsächlich eine Implementierung einer funktionalen Schnittstelle ( dh nicht einer abstrakten Klasse ) ist, können SAM-Konvertierungen verwendet werden, um diese Aussage noch weiter zu vereinfachen:
Bitte beachten Sie auch diese Diskussion über die unterschiedliche Verwendung der in Java und Kotlin definierten Schnittstellen.
quelle