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:你说得对;我不知道为什么基本版本是通用的。在这种情况下,您别无选择,只能忽略警告。如果您重新编辑您的答案,我将对其进行投票并将其作为答案进行检查。