gpt4 book ai didi

java - Java泛型映射键值键入

转载 作者:行者123 更新时间:2023-11-29 09:31:57 25 4
gpt4 key购买 nike

我想要一种方法来返回类似

Map<Class<T>, List<T>>


映射的键对应于该类的实例列表,但是映射可以包含许多不同类型的类。有没有一种方法可以强制键和值的键入必须相对应,同时允许所有不同的类型存储在映射中?

最佳答案

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));

关于java - Java泛型映射键值键入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com