关于java:如何在使用没有泛型的遗留代码时避免Eclipse警告?

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

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

Type safety: The method put(Object, Object) belongs to the raw type HashMap. References to generic type HashMap should be parameterized

如果jsonObject是泛型的,那么最干净的修复程序就是这样,但是由于它不是,所以我不能添加任何泛型类型参数来修复这个问题。我想关闭尽可能少的警告,所以在许多方法中添加"@suppresswarnings"("unchecked")是不吸引人的,但是除了忍受警告之外,我还有其他选择吗?


这里有一个选择。它有点难看,但允许您将禁止的警告范围仅限于单个操作。

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

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

然后,您可以在不出现编译器警告的情况下调用它:

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

这样,您就可以确保不会抑制任何实际希望看到的警告。


为库编写一些助手方法或包装类。只将EDOCX1[0]添加到这些助手中。然后使用助手执行与库的交互。


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