所以我的问题很简单, 在java中如果我有这样的基类:
BaseViewModel.Java
public abstract class BaseViewModel<N> extends ViewModel {
我可以将这个类扩展到其他类而不定义泛型参数N,如下所示:
public class BaseFragment<V extends BaseViewModel> { //this is fine
但是kotlin在这种方法中引发了错误,要求使用通用定义。
class BaseFragment<V: BaseViewModel>: Fragment() {// one type argument expected
如何避免这种情况?
答案 0 :(得分:3)
Kotlin不允许像Java那样使用原始类型。因此,您必须为V : BaseViewModel
指定一些类型:
class BaseFragment<V: BaseViewModel<Any>>: Fragment() {
它等同于您的Java代码,因为V extends BaseViewModel
基本上意味着V extends BaseViewModel<Object>