Generics 泛型:应为类型的数组
我有以下代码:Generics 泛型:应为类型的数组,generics,types,compiler-warnings,toarray,enumset,Generics,Types,Compiler Warnings,Toarray,Enumset,我有以下代码: public class DEF implements Set<ABC> { private EnumSet<ABC> xyz=EnumSet.noneOf(ABC.class); @Override public <T> T[] toArray(T[] a) { return xyz.toArray(a); } } public类DEF实现集合{ 私有EnumSet xyz=EnumSet.non
public class DEF implements Set<ABC> {
private EnumSet<ABC> xyz=EnumSet.noneOf(ABC.class);
@Override
public <T> T[] toArray(T[] a) {
return xyz.toArray(a);
}
}
public类DEF实现集合{
私有EnumSet xyz=EnumSet.noneOf(ABC.class);
@凌驾
公共T[]toArray(T[]a){
返回xyz到阵列(a);
}
}
这给了我以下警告:
第43行应为“ABC[]”类型的数组
这危险吗?或者我可以忽略它?为什么会出现此警告?警告完全正确;你的代码毫无意义 通过编写
T[]toArray()
,您创建了一个可以使用任何类型参数调用的函数,并将返回该类型的数组。始终返回
ABC
s数组违反了您所声称的功能
简而言之,该函数不应该是泛型的
所有这些都不适用于您的情况,因为基本
Set
接口需要这样做
我不知道为什么
Set
会这样声明,但是对于警告您无能为力。为什么您认为T
是ABC
?我已经编辑过了。现在有什么意义吗?但是如果我重写了该方法,那么我就不能更改该方法的签名,对吗?@user2254314:你说得对;我不知道为什么基本版本是通用的。在这种情况下,您别无选择,只能忽略警告。如果您重新编辑您的答案,我将对其进行投票并将其作为答案进行检查。