[英]How to pass class of generic type as a parameter?
我大致有以下代碼:(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項目中的SpiceRequest
返回SparseArray<MyService>
。 Witch要求在其構造函數調用中提供T
MyService
不是Android的“服務” 編輯2通過較小的解決方法解決的問題,添加了新的中間類:
public class Result extends SparseArray<MyService> {}
並將Result.class
傳遞給超級SpiceRequest
構造函數
不可以,泛型類中的代碼不可能在運行時知道其類型參數的類。 類型參數在字節碼中不可見。 這稱為運行時類型擦除。
從http://docs.oracle.com/javase/tutorial/java/generics/erasure.html開始的Java教程中對此進行了詳細介紹。
沒有。 如果您想知道super()或任何方法的類型,可以使用getClass()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.