bsimmons
02/26/2021, 8:14 PMjohnaqel
02/26/2021, 8:20 PMbsimmons
02/26/2021, 8:22 PMjohnaqel
02/26/2021, 8:32 PMPhil Richardson
02/26/2021, 8:34 PMjohnaqel
02/26/2021, 8:35 PMephemient
02/26/2021, 8:49 PMephemient
02/26/2021, 8:52 PMfun <T> foo(filterableAdapter: T) where T : Adapter, T : Filterable
bsimmons
02/26/2021, 9:55 PMMyAdapter
was not the most correct name indeed.bsimmons
02/26/2021, 9:57 PMbsimmons
02/26/2021, 9:58 PMAny
for the adapter in my class and cast it as necessary. It looks like the function works well to force the user of the class to pass the required type.ephemient
02/26/2021, 10:00 PMvar adapter: Adapter? = null
var filterable: Filterable? = null
fun <T> setAdapter(adapter: T) where T : Adapter, T : Filterable {
this.adapter = adapter
this.filterable = adapter
}
and then use the right variable depending on which interface you need at that point. of course it's a pain and it would be nice if we could properly denote intersection types, but oh wellbsimmons
02/26/2021, 10:05 PMbsimmons
02/26/2021, 10:05 PMRoukanken
03/05/2021, 9:32 AMinterface Adapter {
fun adapterFun()
}
interface Filterable {
fun filterableFun()
}
class SearchPage<FilterableAdapter>
where FilterableAdapter : Adapter, FilterableAdapter : Filterable {
private var adapter: FilterableAdapter? = null
fun setAdapter(adapter: FilterableAdapter) {
this.adapter = adapter
}
fun test() {
adapter?.adapterFun()
adapter?.filterableFun()
}
}
but yea, intersection types would be great for thisbsimmons
03/05/2021, 12:40 PM