簡體   English   中英

有什么辦法可以創建/獲取並返回課程 <T<?, ?> &gt;對象?

[英]Is there any way I can create/get and return a Class<T<?, ?>> object?

我似乎把自己畫在了一個通用色的角落。 基本上,我有一個通用接口X<T1, T2 extends Y<?, ?>>通過一堆方法X<T1, T2 extends Y<?, ?>> ,其中包括T1 getFirstClass()T2 getSecondClass() 這對於大多數事情都可以正常工作,但是我需要做的一件事情是找到該類的實例,這些實例是我要查找的內容的超類,而對於那些可以查找的對象,我需要一個“包羅萬象”的對象找不到。 這意味着我最終得到一個看起來像這樣的類:

public class A implements X<Object, Y<?, ?>> {
    ...
    public Class<Y<?, ?>> getSecondClass() {
        return ????
    }
}

我嘗試通過忽略<?, ?>位並使用@SuppressWarnings("rawtypes") (在Eclipse中工作,但由ant構建)給出錯誤消息type parameter Y is not within its bound JDK 應該是相同的-我只知道系統上安裝了一個JDK,即1.6.0_23(很遺憾,由於無法控制的因素,我無法更新它)。

有什么辦法可以解決這個問題,還是我不得不回到制圖板上重新設計我的課程?

顯然-由於擦除-每個類聲明Y<F1, ..., FN>僅有一個Class對象Y.class 該對象的類型為Class<Y>Y為原始類型。 要將其作為Class<Y<A1, ..., AN>傳遞Class<Y<A1, ..., AN>您需要先上映,然后下垂:

return (Class<Y<?, ?>>)(Object) Y.class;

您可以在先前對類似問題的答案中找到相關的JLS參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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