通用阵列我有这个下面的方法:创建指定者方法
public static <T, U> T[] getKeysForValue(Map<T,U> map,U value){
if(map == null || map.isEmpty()) {
return null;
}
Set<T> keys = new HashSet<T>();
for (Map.Entry<T,U> entry : map.entrySet()) {
if (entry.getValue().equals(value)) {
keys.add(entry.getKey());
}
}
return keys.toArray(new T[keys.size()]);
}
我就行获得编译错误:keys.toArray(new T[keys.size()])
,它说“无法创建T的泛型数组”,这是显而易见的。我该如何解决这个问题?
简短的回答:选取其他语言:) – feralin
@feralin较长,真正有用的答案会更好。 Java泛型系统中一些明显的缺陷可以通过使用显式类型令牌来实现。不幸的是,当类型参数本身被参数化时,这些不起作用,但这不是这种情况。不知道如何在Java中执行此操作不是拖钓的好借口。 – millimoose
@feralin我在C#和Java方面拥有同等的专业知识,所以对它们进行比较会有很大的争议。 –