如何将泛型类作为参数传递?

时间:2013-11-13 09:06:27

标签: java android generics robospice

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

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

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

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

编辑更详细的解释

我正在尝试替换AsyncTask从网络加载数据,并从RoboSpice项目返回SparseArray<MyService> SpiceRequest。女巫需要在其构造函数调用中提供T

  • MyService不是Android“服务”

编辑2 通过小型解决方案解决问题,增加新的中间类:

public class Result extends SparseArray<MyService> {}

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

2 个答案:

答案 0 :(得分:1)

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

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

开始

答案 1 :(得分:0)

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