在写android MVP模式的框架时,发现了一个点,就是如果用泛型来简化代码。同时总结了一下确定泛型的确切类型的方法。目前发现了如下的两种方法,今后遇到了再继续追加。
就像是ArrayList的实例化,如:
ArrayList arrayList = new ArrayList<Bean>();我们知道ArrayList<T>
类型是T是泛型,通过以上的实例化,我们就确定了该类型为Bean
看如下代码
BaseActivity<T extends BasePResenter> extends Activity { T presenter;}HomeActivity extends BaseActivity<HomePresenter> { public void onCreate(Intent intent) { presenter = new HomePresenter(); } public void invokeHomePresenterFun() { presenter.homePresenterFun(); // 这样就可以直接调用HomePresenter的homePresenterFun方法,而不用先对persenter进行强转了 }}在定义HomeActivity的时候,通过extends BaseActivity<HomePresernter>
,同样可以确定BaseActivity里面的泛型T
比较如下代码,可以看的更清楚
BaseActivity extends Activity { BsePresenter presenter;}HomeActivity extends BaseActivity { public void onCreate(Intent intent) { presenter = new HomePresenter(); } public void invokeHomePresenterFun() { ((HomePresenter)presenter).homePresenterFun(); // 不使用泛型的时候,presenter的类型就是确定的BasePresenter,如果不强转编译器会报错 }}新闻热点
疑难解答