7

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

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

干净的解决方法是 JSONObject 是否被泛化,但由于不是,我不能添加任何泛型类型参数来解决这个问题。我想关闭尽可能少的警告,因此将“@SuppressWarnings("unchecked")”添加到许多方法中并不吸引人,但是除了忍受警告之外,我还有其他选择吗?

4

3 回答 3

7

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

添加一个执行未经检查的强制转换的函数,并在其上禁止警告:

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

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

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

这样,您可以确保您没有隐藏任何您真正想看到的警告。

于 2010-04-15T15:48:01.983 回答
4

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

于 2010-04-15T15:25:41.187 回答
4

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

于 2010-04-15T15:37:03.810 回答