gpt4 book ai didi

Java 泛型 : How to wrap/extend Android Activity test case?

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:55 26 4
gpt4 key购买 nike

我正在尝试按如下方式扩展 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>Class<Activity>Class<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(){ ... }
}

最佳答案

您需要像这样定义 super 构造函数:

//Only accepts classes that are Activity or extend Activity
public FooActivityTestCase(String pckg, Class<? extends Activity> activityClass)
{
super(pckg, activityClass);
}

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

关于Java 泛型 : How to wrap/extend Android Activity test case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com