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

2022-09-03 15:15:30

我创建了一个简单的计数器类:

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

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

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

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

Intellij 用警告颜色突出显示了 的声明(最后一个代码段中的第一行),工具提示消息显示counter

收集的内容将被查询,但从不更新。

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

我使用的是 14.0.2 社区版。


答案 1

IntelliJ IDEA 没有意识到 increase() 方法更新了 map,因为它不是标准 map API 的一部分。要删除警告,可以禁止显示检查。

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


答案 2

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


推荐