@safevarargs 注意事项
@safevarargs 注解用于确保使用可变参数类型时不会出现数组类型安全问题。但是,虽然它可以防止某些类型的错误,但它并非万能的。
在您提供的示例中,使用 varargs 数组作为参数的方法是:
static <t> t[] asarray(t... objs) { return objs; }
登录后复制
并尝试将其与以下方法一起使用:
static <k> k[] picktwo(k k1, k k2, k k3) { return asarray(k1, k2); }
登录后复制
此代码会引发编译错误,因为 picktwo 方法返回的是一个 object[] 数组,而 asarray 方法期望的是一个 string[] 数组。
这是因为 @safevarargs 注解并不提供类型安全。它只会阻止将原始类型数组分配给通用类型数组,而这里的问题是试图将通用类型数组分配给一个不同类型的通用类型数组。
要解决此问题,可以将 asarray 方法重写为返回 list
@safevarargs static <t> list<t> aslist(t... objs) { return new arraylist<>(arrays.aslist(objs)); }
登录后复制
现在,picktwo 方法可以返回一个 list
static <K> List<K> pickTwo(K k1, K k2, K k3) { return asList(k1, k2); }
登录后复制
以上就是@SafeVarargs注解真的能解决所有可变参数类型安全问题吗?的详细内容,更多请关注抖狐科技其它相关文章!
-
夸克的答案为什么不对
夸克错误的根源在于:训练数据偏差语义理解缺陷知识库不全面推理错误算法限制过度拟合夸克错误的根源 夸克是一款人工智能驱动的问答引擎,虽然功能强大,但有时它的回答也会出现错误。这些错误可能源于以下原因: ...
-
归龙潮冰轮生花任务完成方法攻略
如何完成归龙潮中的冰轮生花任务?各位仙友,作为《归龙潮》中的一项简短任务,冰轮生花任务流程并不复杂。php小编小新提醒大家,只需按照系统提示前往指定地点进行互动,就能轻松完成任务,获取丰厚奖励。为了助...
-
苍翼混沌效应新手选什么角色 苍翼混沌效应新手选择角色推荐
如果你正在尝试苍翼混沌效应,但不知道从哪个角色开始,那么本文正是为你准备的。作为一家专注于 php 开发的网站,php小编百草在这里提供了几个简单的步骤,帮助新手玩家选择适合自己的角色,快速上手这款激...
-
破碎之地原型特性怎么选择 顶尖原型特征精选
破碎之地的原型特性选择至关重要,直接影响角色的整体能力。php小编新一将为大家深入分析原型特性的选择,从它们的核心优势到搭配策略,帮助大家打造强势的破碎之地角色。继续阅读本文,了解顶尖原型特征的精选推...
-
小红书实况水印怎么去掉
如何去除小红书实况水印?利用剪辑软件裁剪视频,去除水印部分。使用第三方工具上传视频,自动去除水印。对于部分用户,可以使用小红书官方提供的编辑功能裁剪去除水印。小红书实况水印如何去除 小红书实况视频中的...