java - 是否可以解决 "A generic array of T is created for a varargs parameter"编译器警告?

标签 java generics

这是相关代码的简化版本,一个泛型类使用另一个具有泛型类型参数的类,并且需要将其中一个泛型类型传递给具有可变参数参数的方法:

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/

相关文章:

Java字节图像操作

java - 使用 StreamAPI 按多个字段查找总和、平均分组

javascript - 如何将我的 jquery/javascript 函数重新编码为更通用并且不需要唯一标识符?

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

java - 为什么我的 while 循环不停止?

java - Redisson getLock()对于分布式锁使用是否安全?

java - 计算java中多个文件/文档中的词频

generics - 为什么我不能在带有类型参数的特征上添加一揽子暗示?

java - 通用混淆 : Type of this in generic superclass is not defined at compile time?

java - Java 中 Class 类型的可变参数