我的Android应用中具有以下结构:
public abstract class BaseActivity extends AppCompatActivity{
protected BaseViewModel mViewModel;
}
public abstract class BaseViewModel extends ViewModel { ... }
public class MainActivityViewModel extends BaseViewModel { ... }
public class MainActivity extends BaseActivity{ ... }
现在在MainActivity中初始化BaseViewModel时,我希望理想地将类型输入为通用类型,因此我不必每次都将其强制转换为子实现((MainActivityViewModel)mViewModel),我已经了解了通用自定义类型,但是不明白在这种情况下它是如何工作的。
如果您希望protected BaseViewModel mViewModel;
具有通用类型,则应重写您的类,如下所示:
public abstract class BaseActivity<T> extends AppCompatActivity{
protected T mViewModel;
}
public class MainActivity extends BaseActivity<MainActivityViewModel >{ ... }
我希望我回答了你的问题。如果我不赞成,您是否应该再解释一下?