2012-09-05 145 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我同意,只是试图回答他的问题。 –

相关问题