我希望有一个函数来构建和启动某个类及其子类的活动,假设我有两个活动A
和B
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>
?只是为了更多的多态性?
答案 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);
}