0

我大致有以下代码:(SpiceRequest 是来自 RoboSpice 项目的类)

public class MyRequest extends SpiceRequest<SparseArray<MyService>> {
    // ...
    public MyRequest() {
        // This will not work
        super(SparseArray<MyService>.class);
    }

    public SparseArray<MyService> loadDataFromNetwork() {
        // ...
    }
}

是否可以传递给泛型类型的其他方法类对象?(对不起,如果它是微不足道的,我是 Java 世界的新手)

编辑更详细的解释

我正在尝试替换AsyncTask来自网络的女巫加载数据并SparseArray<MyService>SpiceRequestRoboSpice 项目返回。Witch 需要T在它的构造函数调用中提供。

  • MyService不是安卓“服务”

编辑 2 通过小变通解决问题,添加新的中间类:

public class Result extends SparseArray<MyService> {}

并传递:Result.class给超级SpiceRequest构造函数

4

2 回答 2

1

不,泛型类中的代码不可能在运行时知道其类型参数的类。type 参数在字节码中不可见。这称为运行时类型擦除。

Java 教程中详细介绍了它,从http://docs.oracle.com/javase/tutorial/java/generics/erasure.html开始

于 2013-11-13T09:10:59.943 回答
0

不。如果你想知道 super() 或任何方法的类型,你可以使用 getClass()。

于 2013-11-13T09:19:57.403 回答