2011-11-10 60 views
0

如果返回Class<?>[],如何存儲變量調用的結果?這是我假設的工作中的泛型,但我無法弄清楚如何存儲它。存儲返回類型<?> []

例如當我做

myObject。 - 在這裏>我得到的日食方法列表,當我去我希望它returns Class<?>[]

+0

你能給一個代碼示例嗎? – Marnix

+1

[] result = someMethod();.我錯過了什麼? –

+0

好吧 - 將它作爲一個未知類型的數組存儲它似乎很奇怪:/ – Biscuit128

回答

0

我認爲這些問題表明了對泛型的誤解。 當一個方法返回

Class<?>[] 

那是因爲你說得那麼它可以返回任何類型的類的數組。

當您實際使用該方法時,它不會評估真正的類是什麼,它只是返回方法簽名中聲明的內容。然後,您可以檢查結果中的每個對象,並獲得實際的課程。泛型只是一種使弱類型的普通類(即集合類)更加強類型化的方式,它不是一種處理機制。它永遠不會發現什麼?是給你的。

如果您事先知道?可能是什麼,請更改您的方法簽名以指示它。你甚至可以聲明它像

Class<? extends BaseClass>[] 

表明你只期望BaseClass的子類。

0

如果方法你希望你的代碼保持通用的,你可以將其存放在

Class<?>[] 

變量。

如果您知道該類型並且不需要保持通用類型,則可以定義一個更受限制的類型變量並將該方法的結果轉換爲該類型的結果。

相關問題