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?
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?