簡體   English   中英

如何通過泛型類作為參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM