Java:类型安全:为 varargs 参数创建 A 的通用数组

标签 java casting variadic-functions

<分区>

Possible Duplicate:
Is it possible to solve the “A generic array of T is created for a varargs parameter” compiler warning?

考虑这是给定的:

interface A<T> { /*...*/ }
interface B<T> extends A<T> { /*...*/ }
class C { /*...*/ }
void foo(A<T>... a) { /*...*/ }

现在,一些其他代码想要使用 foo:

B<C> b1 /* = ... */;
B<C> b2 /* = ... */;
foo(b1, b2);

这给了我警告

Type safety : A generic array of A is created for a varargs parameter

所以我将调用更改为:

foo((A<C>) b1, (A<C>) b2);

这仍然给我同样的警告。

为什么?我该如何解决?

最佳答案

您真正能做的就是使用 @SuppressWarnings("unchecked") 抑制该警告。 Java 7 将为客户端代码消除该警告,将其移至 foo(A... a) 的声明而不是调用站点。查看 Project Coin 提案 here .

关于Java:类型安全:为 varargs 参数创建 A 的通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981579/

相关文章:

Java - 检查给定索引处的数组是否包含给定的 int

java - 每次关闭终端时都需要进行 Maven 设置

postgresql - 从 hstore 中删除 key 时出现意外的字符串结尾

java - 使用显式 Intent 在两个 Activity 之间发送数据

java - 意外的类型安全违规

c++ - 用 static_cast<int> 舍入?

c++ - 如何将容器的内容传递给 C++ 中的可变参数函数

actionscript-3 - 在AS3中展开var args

c - 在编译时从 __VA_ARGS__ 确定参数类型

java - HttpClient - 将 CipherInputStream 添加到 MultipartEntity