我想要一个返回类似
的方法Map<Class<T>, List<T>>
其中地图的键对应于该类的实例列表,但地图可以包含许多不同类型的类。有没有办法强制键和键的输入必须对应,同时允许所有不同的类型存储在地图中?
答案 0 :(得分:-2)
public class ClassInstancesMap {
private Map<Class<?>, List<?>> map;
public ClassInstancesMap() {
map = new HashMap<>();
}
public <T> void put(Class<T> key, List<T> list) {
for (T e : list)
if (key != e.getClass())
throw new IllegalArgumentException(
"Type not match key=" + key
+ " element=" + e
+ "(class=" + e.getClass() + ")");
map.put(key, list);
}
@SuppressWarnings("unchecked")
public <T> List<T> get(Class<T> key) {
return (List<T>)map.get(key);
}
@Override
public String toString() {
return map.toString();
}
}
以下示例是可编译的,但它会引发运行时异常。 因此,此地图强制键入和值的输入必须对应
ClassInstanesMap map = new ClassInstancesMap();
map.put(Object.class, Arrays.asList(1, 2));