收集的内容从未在Intellij IDEA中更新警告

时间:2015-05-26 12:44:54

标签: java intellij-idea

我创建了一个简单的Counter类:

public class Counter<T> extends HashMap<T, Long> {
    public Counter() {
    }

    public void increase(T key) {
        put(key, getOrDefault(key, 0l) + 1);
    }
}

在我的代码中,我调用了increase()方法,然后使用Map方法访问数据,例如

  Counter<Integer> counter = new Counter<>();
  for (Integer i: ... some collection ...)
      counter.increase(i);

Intellij使用警告颜色突出显示counter(最后一行最后一行)的声明,工具提示消息显示

  

查询集合的内容,但从未更新。

显然我可以忽略这个警告,但有没有办法说服Intellij我的代码没有问题?

我正在使用14.0.2社区版。

2 个答案:

答案 0 :(得分:7)

IntelliJ IDEA没有意识到increase()方法更新了地图,因为它不是标准地图API的一部分。要删除警告,您可以取消检查。

但是,更好的设计是让Counter类封装HashMap,而不是扩展它。这将确保您的类的用户只调用适当的API,并且不会通过直接调用put()或其他修改方法来破坏您的数据。

答案 1 :(得分:2)

您也可以尝试添加@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")来忽略它。