是否有可能解决“为varargs参数创建T的通用数组”的编译器警告?

马特b:

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

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);
    }

}

有没有正确的方法将通用参数传递给varargs方法而不会遇到此警告?

当然像

assembler.assemble("hello", new T[] { something });

不起作用,因为您无法创建通用数组。

凯文:

除了添加外@SuppressWarnings("unchecked"),我不这么认为。

错误报告具有更多信息,但归结为编译器不喜欢泛型类型的数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通用varargs的编译器警告解决方案

Google Closure编译器发出警告:类型不兼容;即使参数具有通用类型,有没有办法解决?

您能解释/解决这些“通用约束”编译器错误吗?

使用CoreMatchers.allOf()的“类型为Matcher <?的varargs参数的未经检查的通用数组创建,扩展了String> []”警告

为什么将多维数组放入varargs会引起编译器警告?

如果出现编译时警告,是否有可能使编译器提前退出,导致构建失败?

Java自动拆箱-是否有编译器警告?

是否有可能说服Golang编译器接受类型为Foo int的int?

是否有可能让Maven为其编译器插件接受maxerrs?

'await' 是否有可能解决 Promise?

编译器是否有可能获得最大输出?

Zig编译器是否将具有comptime可变长度的数组视为可能的零长度数组?

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

Swift编译器问题:编译器无法为Alamofire发布请求编译长参数数组

是否可以为某些方法或参数生成编译器/重新共享器警告?

是否有任何C ++编译器会发出警告,警告您悬挂参考?

我用于Retrofit接口创建的通用函数得到编译器错误:推断的类型为Class <T>?但是应该是Class <T!>

Java未检查:varargs参数的未检查通用数组创建

解决CocoaPods目标会覆盖针对编译器的警告

ARM平台是否具有通用工具链/编译器?

我想警告编译器有关外部代码可能的空值

IntelliJ警告:varargs参数的未经检查的泛型数组创建

编译器的行为与通用方法的null参数不同

如何在VS2013中为所有项目设置编译器警告级别?

你能解决用下面的代码编译器的问题

MSVC 是否有解决此代码的“内部编译器错误”的方法?

声明的参数限制和编译器警告

fsharp编译器是否将冗余函数组合减少为空操作?

通用字典类的Swift编译器错误:无法使用类型为((forKey K)'的参数列表调用'removeValue'