2012-09-05 146 views
0

說我們具備的功能:我們可以有一個泛型的類類型嗎?

<T> T getFromCache (ClassType<T> clazz); 

對於字符串:

String str = getFromCache(String.class); 

對於圖什麼,我現在想這樣做的:

//… 
Map<String, SomeData> anotherMapObject = getFromCache(HashMap.class); 

我們能比這更具體的?

課程的一種解決方案是將'HashMap'包裝在一個類中。但如果我們不想這樣做,那麼是否有更好的解決方案?

+7

我不能完全解出你正在努力完成什麼。 – Dave

+0

我也迷路了! –

+0

有問題的函數是從Cache獲取對象的函數。 (我們將byteArray分配給一個對象,然後在返回之前將它轉換爲給定的泛型。) –

回答

0

如果你想在地圖實現傳遞中,你可以這樣做:

private <M extends Map> Map<String, String> get(Class<M> m) throws Exception { 
     return (Map<String, String>) m.newInstance(); 
    } 

您可以參數化的關鍵和值類型是這樣的:

private <M extends Map<K, V>, K, V> M getMap(Class<M> m, Class<K> k, Class<V> v) 
+0

這很糟糕...(我不是說有更好的方法,它只是總的...) –

+0

LOL我同意,只是試圖回答他的問題。 –

相關問題