Fabio
09/10/2020, 5:56 AMabstract class TodayDynamicModel<V : View> : BardeenListUiModel() {
fun asTodayDynamicModel() = this as TodayDynamicModel<View> // --> Unchecked cast: TodayDynamicModel<V> to TodayDynamicModel<View>
}
Isn't V guaranteed to be of type View ?Kroppeb
09/10/2020, 9:19 AMTodayDynamicModel<out V:View>Fabio
09/14/2020, 1:14 AMabstract class TodayDynamicModel<out V : View> : BardeenListUiModel() {
abstract fun bindView(view: V) // Type parameter V is declared as 'out' but occurs in 'in' position in type V
And if I do <in V: View> I can't do abstract fun buildView(context: Context): V?Fabio
09/14/2020, 1:22 AMabstract class BardeenDynamicRecyclerViewModel<V : View> : BardeenListUiModel() {
abstract fun bindView(view: V?)
abstract fun buildView(context: Context): V?
@Suppress("UNCHECKED_CAST")
fun asTodayDynamicModel() = this as BardeenDynamicRecyclerViewModel<View>
fun buildAndBindView(context: Context): V? {
return buildView(context)
.also {
bindView(it)
}
}
}Fabio
09/14/2020, 2:04 AMout V:View in fun asTodayDynamicModel() = this as BardeenDynamicRecyclerViewModel<out View> and in a bunch of places that call asTodayDynamicModel.