繁体   English   中英

如何在没有泛型的情况下使用遗留代码时避免使用Eclipse警告?

[英]How to avoid Eclipse warnings when using legacy code without generics?

我正在使用JSON.simple从Java生成JSON输出。 但是每当我调用jsonobj.put(“this”,“that”)时,我在Eclipse中看到一个警告:

类型安全:方法put(Object,Object)属于原始类型HashMap。 应该参数化对泛型类型HashMap的引用

干净的修复是如果JSONObject是通用的,但由于它不是,我不能添加任何泛型类型参数来解决这个问题。 我想关闭尽可能少的警告,所以在许多方法中添加“@SuppressWarnings(”unchecked“)”是没有吸引力的,但除了忍受警告之外我还有其他选择吗?

这是一个选项。 它有点难看,但允许您将抑制警告的范围仅限于单个操作。

添加一个执行未选中的强制转换的函数,并禁止对其执行警告:

@SuppressWarnings("unchecked")
private final static Map<Object,Object> asMap(JSONObject j)
{
  return j;
}

然后你可以在没有编译警告的情况下调用它:

asMap(jsonobj).put("this", "that");

这样,您可以确定不会抑制实际想要查看的任何警告。

您可以拥有每个项目的编译器设置,并且可以将这些警告更改为忽略

编写一些辅助方法或库的包装类。 仅将@SuppressWarnings("unchecked")添加到这些帮助程序。 然后使用帮助程序执行与库的交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM