我有以下代码:
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);
}
}
这给了我以下警告:
类型为"ABC[]"的数组预计在第 43 行
这危险吗?或者我可以忽略它吗?为什么会有这个警告?
警告是完全正确的;你的代码毫无意义。
通过编写 <T> T[] toArray()
,您已经创建了一个可以使用任何类型参数调用的函数,并将返回该类型的数组。
总是返回一个ABC
数组会违反你声称它会做的事情。
简而言之,该函数不应是泛型的。
这些都不适用于您的情况,因为基本Set<E>
接口需要这样做。
我不知道为什么Set<E>
以这种方式声明,但您对警告无能为力。