Java泛型:如何包装/扩展Android Activity测试用例?
发布时间:2020-12-15 02:27:16 所属栏目:Java 来源:网络整理
导读:我试图扩展ActivityInstrumentationTestCase2如下: public abstract class FooActivityTestCaseT extends Activity extends ActivityInstrumentationTestCase2Activity { public FooActivityTestCase(String pckg,ClassActivity activityClass) { super(pck
我试图扩展ActivityInstrumentationTestCase2如下:
public abstract class FooActivityTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<Activity> { public FooActivityTestCase(String pckg,Class<Activity> activityClass) { super(pckg,activityClass); } public void foo(){ ... } } 我尝试像这样扩展FooActivityTestCase: public class SpecificFooTestCase extends FooActivityTestCase<MyActivity> { public SpecificFooTestCase() { super("foo.bar",MyActivity.class); // error on this line } } Eclipse在构造函数中给出了以下错误: The constructor FooActivityTestCase<MyActivity>(String,Class<MyActivity>) is undefined 我很确定问题在于我如何使用泛型.当SpecificFooTestCase扩展ActivityInstrumentationTestCase2时,我没有收到任何错误.谁能指出我做错了什么? 忽必烈汗和迈克尔迈尔斯的建议一起工作.在我改变FooActivityTestCase以扩展ActivityInstrumentationTestCase2< T>之后和类<活动>类< T>在构造函数中,类编译时没有错误.这是结果类(SpecificFooTestCase没有改变): public abstract class FooActivityTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<T> { public FooActivityTestCase(String pckg,Class<T> activityClass) { super(pckg,activityClass); } public void foo(){ ... } } 解决方法
你需要像这样定义超级构造函数:
//Only accepts classes that are Activity or extend Activity public FooActivityTestCase(String pckg,Class<? extends Activity> activityClass) { super(pckg,activityClass); } 问题是,对于泛型参数,泛型类型必须始终是完全相同的泛型类型,如果您希望能够在继承树中传递需要使用通配符的内容吗?并扩展,这样你就可以传递任何扩展该类的泛型类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |