如何避免将抽象类向下转换为子类?

问题描述 投票:0回答:1

我的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),我已经了解了通用自定义类型,但是不明白在这种情况下它是如何工作的。

java android abstract-class self-type
1个回答
0
投票

如果您希望protected BaseViewModel mViewModel;具有通用类型,则应重写您的类,如下所示:

public abstract class BaseActivity<T> extends AppCompatActivity{
        protected T mViewModel;
    }

 public class MainActivity extends BaseActivity<MainActivityViewModel >{ ... }

我希望我回答了你的问题。如果我不赞成,您是否应该再解释一下?

© www.soinside.com 2019 - 2024. All rights reserved.