Asumsikan itu KeyAdapter
adalah kelas abstrak dengan beberapa metode yang dapat diganti.
Di java saya bisa melakukan:
KeyListener keyListener = new KeyAdapter() {
@Override public void keyPressed(KeyEvent keyEvent) {
// ...
}
};
Bagaimana melakukan hal yang sama di Kotlin?
java
abstract-class
kotlin
Tvaroh
sumber
sumber
val k: KeyAdapter = KeyAdapter { println("Hello, world!") }
tidak akan berfungsi. (Namun saya sedang mencari sintaks lambda.) Saya pikir saya akan mencari pertanyaan lain dengan judul yang tepat ini, tetapi pertanyaan yang dirumuskan lebih baik dan tautkan yang ini dengan komentar ...Jawaban:
Dari dokumentasi bahasa resmi Kotlin :
Diterapkan untuk masalah Anda yang dihadapi:
Seperti yang telah ditunjukkan oleh Peter Lamberg - jika kelas anonim sebenarnya merupakan implementasi dari antarmuka fungsional ( bukan dari kelas abstrak ), Konversi SAM dapat digunakan untuk menyederhanakan pernyataan ini lebih jauh:
Perhatikan juga diskusi ini tentang perbedaan penggunaan antarmuka yang ditentukan di Java dan Kotlin.
sumber