ursus
10/09/2019, 7:26 PMRuckus
10/09/2019, 8:04 PMFoo
has to have access to its generic types.ursus
10/09/2019, 8:44 PMursus
10/09/2019, 8:45 PMRuckus
10/09/2019, 8:48 PMursus
10/09/2019, 8:49 PMclass FooFragment : BaseFragment<FooViewMode> {
override fun onCreateViewModel() {
return FooViewModel()
}
}
class BaseFragment<T> {
protected lateinit var viewModel: T
override fun onCreateView(view: View) { <-- framework
viewModel = onCreateViewModel()
}
protected abstract fun onCreateViewModel() : T
}
ursus
10/09/2019, 8:50 PMRuckus
10/09/2019, 8:53 PMFooFragment.onCreateViewModel()
ursus
10/09/2019, 8:54 PMursus
10/09/2019, 8:55 PMRuckus
10/09/2019, 8:55 PMursus
10/09/2019, 8:56 PMursus
10/09/2019, 8:57 PMRuckus
10/09/2019, 8:58 PMRuckus
10/09/2019, 8:59 PMRuckus
10/09/2019, 9:00 PMursus
10/09/2019, 9:01 PMRuckus
10/09/2019, 9:03 PMursus
10/09/2019, 9:05 PMclass Bar : Foo<Quax>()
abstract class Foo<T>
internal class Quax
error is public sublcass exposes internal supertype argument
ursus
10/09/2019, 9:08 PMursus
10/09/2019, 9:09 PMpublic class Rah extends Meh<Ohe> {
}
class Ohe {
}
abstract public class Meh<T> {
}
ursus
10/09/2019, 9:10 PMursus
10/09/2019, 9:11 PM