如何使用已定义类的子类构造一个intent对象?

时间:2018-02-05 05:14:23

标签: java android oop

我希望有一个函数来构建和启动某个类及其子类的活动,假设我有两个活动AB

public class A extends AppCompatActivity {...}

public class B extends A {...}

我在MainActivity中有一个名为startAActivity()

的函数
private void startAActivity(Object someExtra, Class<A> activityClass) {
  Intent i = new Intent(MainActivity.class, activityClass);
  i.putExtra(SOME_EXTRA, someExtra);
  startActivity(i);
}

如果我调用startAActivity(extra, B.class)我会得到一个错误,因为它期望A类的Class对象,我知道我可以在函数签名中放一个?来使它工作,但是B是A的子类,是否有一种方法可以将参数保持为Class<A> activityClass,以便将Class<B>视为Class<A>?只是为了更多的多态性?

1 个答案:

答案 0 :(得分:0)

将您的第二个参数类型Class<A>更改为Class<? extends A>

private void startAActivity(Object someExtra, Class<? extends A> activityClass) {
  Intent i = new Intent(MainActivity.class, activityClass);
  i.putExtra(SOME_EXTRA, someExtra);
  startActivity(i);
}