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

Pau*_*ley 7 java generics legacy-code

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

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

干净的修复是如果JSONObject是通用的,但由于它不是,我不能添加任何泛型类型参数来解决这个问题.我想关掉的一些警告越好,这样加入"@SuppressWarnings("未登记")",以大量的是没有吸引力的方法,但是我有,除了忍受的警告,任何其他选择吗?

Kip*_*Kip 7

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

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

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

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

asMap(jsonobj).put("this", "that");
Run Code Online (Sandbox Code Playgroud)

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