【问题标题】:Generics: Array of type expected泛型:预期类型的​​数组
【发布时间】:2014-02-19 17:14:15
【问题描述】:

我有以下代码:

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 行

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

【问题讨论】:

  • 为什么你认为TABC
  • 我已经编辑过了。现在有意义吗?

标签: generics types compiler-warnings toarray enumset


【解决方案1】:

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

通过编写&lt;T&gt; T[] toArray(),您创建了一个可以使用任何类型参数调用的函数,并将返回该类型的数组。
总是返回 ABCs 的数组违反了您声称的做法。

简而言之,那个函数不应该是通用的。


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

我不知道为什么 Set&lt;E&gt; 会这样声明,但您对警告无能为力。

【讨论】:

  • 但是如果我重写了方法,那么我不能改变方法签名,可以吗?
  • @user2254314:你是对的;我不知道为什么基本版本是通用的。在这种情况下,您别无选择,只能忽略警告。
  • 如果您重新编辑您的答案,我会投票赞成并将其作为答案进行检查。
猜你喜欢
  • 2020-10-13
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 2011-06-13
  • 1970-01-01
相关资源
最近更新 更多