加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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);
      }

问题是,对于泛型参数,泛型类型必须始终是完全相同的泛型类型,如果您希望能够在继承树中传递需要使用通配符的内容吗?并扩展,这样你就可以传递任何扩展该类的泛型类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读