当前位置: 首页 > 面试题库 >

警告通用变量

尹钱青
2023-03-14
问题内容

我声明了以下方法:

private void mockInvokeDBHandler(Map<String, Object>... rows) {
    List<Map<String, Object>> allRows = Arrays.asList(rows));
    // rest of method omitted
}

客户端使用类似于

Map<String, Object> row1 = new HashMap<String, Object>();
Map<String, Object> row2 = new HashMap<String, Object>();

mockInvokeDBHandler(row1, row2);

但是,上面显示的最后一行会生成警告

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

我不完全理解这一点,但是我想这是因为varargs参数被转换为数组,而拥有类型为泛型类的数组是一个坏主意(因为泛型是不变的,而数组不是)。

我可以通过将方法重新定义为

private void mockInvokeDBHandler(List<Map<String, Object>> rows) {
}

但这给将行对象放入客户端上的列表的负担,我宁愿避免。有更好的解决方案吗?


问题答案:

为了将参数传递给varargs方法,编译器会将参数放入数组中。

警告是要让您知道编译器不能保证数组中的每个元素-varags方法的每个参数-确实是a Map<String, Object>

这有点恼人的警告,因为除了重新定义方法签名以不使用varargs之外,您无法解决此问题。IMO是可以忽略的,只要您完全确定这些参数的实际运行时类型即可(在本例中就是)。



 类似资料:
  • 云联壹云平台支持对宿主机、虚拟机、云账号等资源的相关指标进行监控告警,告警消息支持通过机器人、邮件、短信、飞书、钉钉、企业微信等通知渠道发送给用户。 告警策略 告警策略即针对监控指标设置阈值,当资源的指标超过阈值时,将会立即通过通知渠道向用户发送告警消息,使用户可以快速响应解决问题。 告警历史 告警历史显示系统中所有的触发告警以及恢复告警的告警策略和资源信息。 告警资源 告警资源即宿主机、云账号等

  • 我正在使用python处理一些图像,并尝试将一系列大小为961x509的图像转换为MP4电影文件。我已经这样做了,它正在工作,但我有一个相当恼人的问题,警告说这样的话: 警告:根:图像FFMPEG_WRITER警告:输入图像不能被macro_block_size=16整除,大小从(509L,961L)到(512L,976L),以确保与大多数编解码器和播放器的视频兼容性。若要防止调整大小,请使输入图

  • 说明 此消息用于统一的门店异常告警消息上传,目前支持结账异常消息 请求地址 http://api.dc78.cn/Api/msg_err_post 请求方式 POST 请求参数 GET参数 描述 type=cash,异常类型,cash:结账支付异常,warn:营业异常(如退单) POST参数 描述 title=消息类型(如:退单) msg=桌台888结账失败,原因。。。 返回 { "status"

  • 此消息用于统一的门店异常告警消息上传,目前支持结账异常消息。 发送的消息将通过来管家通知消息发送给相关人员,需要在商家后台进行相关通知消息的订阅后才能正常接收到推送。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 msg_err_post string get GET参数组,本组参数需要参与签名 是 ob