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