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]添加到这些助手中。然后使用助手执行与库的交互。
您可以设置每个项目的编译器,并且可以将这些警告更改为忽略。