假设我们有这个功能:
<T> T getFromCache (ClassType<T> clazz);
对于字符串:
String str = getFromCache(String.class);
对于我目前正在考虑做的地图:
//…
Map<String, SomeData> anotherMapObject = getFromCache( HashMap.class);
我们可以比这更具体吗?
一个解决方案是将“HashMap”包装在一个类中。但如果我们不想这样做那么有更好的解决方案吗?
答案 0 :(得分: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)