0

我有以下代码:

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 行

这很危险吗?或者我可以忽略它吗?为什么会有这个警告?

4

1 回答 1

2

警告是完全正确的;你的代码没有意义。

通过编写<T> T[] toArray(),您创建了一个可以使用任何类型参数调用的函数,并将返回该类型的数组。
总是返回一个 s 数组ABC违反了你声称它会做的事情。

简而言之,该功能不应该是通用的。


这些都不适用于您的情况,因为基本Set<E>接口需要这个。

我不知道为什么Set<E>要这样声明,但是您对警告无能为力。

于 2014-02-19T17:28:59.460 回答