如何避免将抽象 class 向下转换为子 class?
How to avoid downcasting of abstract class to child class?
我的 android 应用程序中有以下结构:
abstract class BaseActivity extends AppCompatActivity{
protected BaseViewModel mViewModel;
}
abstract class BaseViewModel extends ViewModel { ... }
class MainActivityViewModel extends BaseViewModel { ... }
class MainActivity extends BaseActivity{ ... }
现在在 MainActivity 中初始化 BaseViewModel 时,我想将类型作为泛型输入,这样我就不必每次都将其转换为子实现 ((MainActivityViewModel)mViewModel)
,我已经阅读了泛型自打字,但不明白在这种情况下这是如何工作的。
如果你想 protected BaseViewModel mViewModel;
有一个通用类型,你应该
重写你 class 如下:
public abstract class BaseActivity<T> extends AppCompatActivity{
protected T mViewModel;
}
public class MainActivity extends BaseActivity<MainActivityViewModel >{ ... }
希望我回答了你的问题。如果我不知道,你是否应该再解释一下?
我的 android 应用程序中有以下结构:
abstract class BaseActivity extends AppCompatActivity{
protected BaseViewModel mViewModel;
}
abstract class BaseViewModel extends ViewModel { ... }
class MainActivityViewModel extends BaseViewModel { ... }
class MainActivity extends BaseActivity{ ... }
现在在 MainActivity 中初始化 BaseViewModel 时,我想将类型作为泛型输入,这样我就不必每次都将其转换为子实现 ((MainActivityViewModel)mViewModel)
,我已经阅读了泛型自打字,但不明白在这种情况下这是如何工作的。
如果你想 protected BaseViewModel mViewModel;
有一个通用类型,你应该
重写你 class 如下:
public abstract class BaseActivity<T> extends AppCompatActivity{
protected T mViewModel;
}
public class MainActivity extends BaseActivity<MainActivityViewModel >{ ... }
希望我回答了你的问题。如果我不知道,你是否应该再解释一下?