我大致有以下代码:( 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
构造函数
答案 0 :(得分:1)
不,泛型类中的代码不可能在运行时知道其类型参数的类。 type参数在字节代码中不可见。这称为运行时类型擦除。
Java教程中详细介绍了这一点,从http://docs.oracle.com/javase/tutorial/java/generics/erasure.html
开始答案 1 :(得分:0)
NO。如果你想知道super()或任何方法中的类型,你可以使用getClass()。