这是相关代码的简化版本,一个泛型类使用另一个具有泛型类型参数的类,并且需要将其中一个泛型类型传递给具有可变参数参数的方法:
class Assembler<X, Y> {
void assemble(X container, Y... args) { ... }
}
class Component<T> {
void useAssembler(T something) {
Assembler<String, T> assembler = new Assembler<String, T>();
//generates warning:
// Type safety : A generic array of T is
// created for a varargs parameter
assembler.assemble("hello", something);
}
}
是否有任何正确的方法可以将泛型参数传递给可变参数方法而不会遇到此警告?
当然是这样的
assembler.assemble("hello", new T[] { something });
不起作用,因为您无法创建通用数组。
最佳答案
在Java 6中,除了添加@SuppressWarnings("unchecked")
,我不这么认为。
这个 bug report有更多信息,但归结为编译器不喜欢泛型类型的数组。
关于java - 是否可以解决 "A generic array of T is created for a varargs parameter"编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1445233/