Katakanlah saya menginginkan variabel tipe, T, yang memperluas kelas tertentu dan mengimplementasikan antarmuka. Sesuatu seperti:
class Foo <T : Bar implements Baz> { ... }
Apa sintaks untuk ini di Kotlin?
Katakanlah saya menginginkan variabel tipe, T, yang memperluas kelas tertentu dan mengimplementasikan antarmuka. Sesuatu seperti:
class Foo <T : Bar implements Baz> { ... }
Apa sintaks untuk ini di Kotlin?
Jawaban:
Hanya satu batas atas yang dapat ditentukan di dalam tanda kurung sudut.
Kotlin menawarkan sintaks yang berbeda untuk batasan umum jika ada lebih dari satu batasan:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... }
dan untuk fungsi:
fun <T> f(): Foo where T : Bar, T : Baz { ... }
Itu didokumentasikan di sini .
fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService
. Saya tidak peduli dengan tipe T. Tapi saat saya memanggil metode ini, Kotlin menanyakan tipe spesifiknya. Jadi bagaimana saya bisa memanggil metode ini?