2013-05-31 69 views
0

有沒有辦法將Class的對象作爲參數提供給泛型方法?將類對象作爲通用參數

例如,我有一個方法:

public <T> Queue <T> getSomething (...) 

我具有Class一個對象,如

Class<?> key = ... 

是否有一種方法可以提供key作爲通用參數getSomething(...)方法?僞編碼的例子是:

Queue<key> queue = object.<key>getSomething(...) 
+0

whyyyy ???這裏使用對象的優點是什麼?你可以簡單地使用ClassType – stinepike

+0

我有一個'類'類的對象的集合,我想遍歷集合,並創建一個新的隊列與集合中相同類型的元素。例如,集合包含'Integer.class','Object.class'等,我希望隊列分別是'隊列','隊列'。 –

回答

0

可以傳遞一個類對象到一個方法聲明如下:

public <T> Queue<T> getSomething(Class<T> type, ...) { ... } 
+0

我已經這樣做了,但問題是:我希望返回的隊列具有與'key'相同類型的元素。因此,例如,如果'key'是'Class ',隊列應該具有'Integer'的元素。我試圖這樣做,以便我可以循環訪問'Class '對象的集合,並在每次迭代中獲取具有該類的元素的Queue。 –

+0

上面的聲明顯示瞭如何聲明返回類型。你如何生成內容似乎是一個單獨的問題。您是否在過濾或轉換集合的元素?到目前爲止,你有什麼? –

+0

我有一個'類'類的對象的集合,我想遍歷集合並創建一個新的Queue,其中包含與集合中相同類型的元素。例如,集合包含'Integer.class','Object.class'等,我希望隊列分別是'隊列','隊列'。實質上,我希望隊列包含'Class '中的'?'類型的元素。 –

0

可以將它作爲一個參數,像任何其他參數

Class<T> tClass = ... 
Queue<T> queue = object.getSomething(tClass, ...); 
2

你不能這樣做,因爲它沒用。

泛型類型參數純粹是編譯時類型檢查工具。因此,編譯時未知的類型參數的要點是什麼?你無法對此發表任何言論,而且你也無法對此做任何事情。

+0

G'day,我認爲它不會有用;但是我懷疑你可以在泛型中使用它,因爲每個返回類型都需要聲明爲泛型的_child_。你不妨寫一些蹩腳(簡單)的樣板。一個有用的用例是根據業務需求檢查聲明性輸入,例如JavaFX節點插件類型,接口類型或數據庫構造。 – will