Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Intellij IDEA中的集合内容从未更新警告_Java_Intellij Idea - Fatal编程技术网

Java Intellij IDEA中的集合内容从未更新警告

Java Intellij IDEA中的集合内容从未更新警告,java,intellij-idea,Java,Intellij Idea,我创建了一个简单的计数器类: public class Counter<T> extends HashMap<T, Long> { public Counter() { } public void increase(T key) { put(key, getOrDefault(key, 0l) + 1); } } 公共类计数器扩展HashMap{ 公众柜位(){ } 公共空间增加(T键){ put(键,getOrDefa

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

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

    public void increase(T key) {
        put(key, getOrDefault(key, 0l) + 1);
    }
}
公共类计数器扩展HashMap{
公众柜位(){
}
公共空间增加(T键){
put(键,getOrDefault(键,0l)+1);
}
}
在我的代码中,我调用increase()方法,然后使用Map方法访问数据,例如

  Counter<Integer> counter = new Counter<>();
  for (Integer i: ... some collection ...)
      counter.increase(i);
计数器计数器=新计数器();
对于(整数i:…某些集合…)
计数器。增加(i);
Intellij用警告色突出显示
计数器的声明(最后一段的第一行),工具提示消息显示

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

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


我使用的是14.0.2社区版

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


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

您还可以尝试添加
@SuppressWarnings(“不匹配的QueryAndUpdateOfCollection”)
忽略它。

由于Intellij警告消息指定了集合,它是否可能是在谈论其他集合,而不是计数器(扩展了不是集合的映射…)警告位于该变量上。对不起,我的问题一开始可能不够清楚。我编辑希望它现在更清晰。那么突出显示的代码行在哪里呢?我认为没有它就足够清晰了。现在添加了它。确实很奇怪为什么IDE认为有任何问题…谢谢你的建议。在我的场景中,如果用户愿意的话,我对访问HashMap很满意,而且我没有太多兴趣,也没有编写许多只委托的方法:-)是否有@SuppressWarning参数来处理此检查?是的。您可以在任何检查突出显示上按Alt Enter键,然后从菜单中选择抑制操作。您将此抑制放置在何处?我在哪里可以找到抑制消息列表,因为这似乎不适合我。@ScottBiggs,我想我们永远不会know@ScottBiggs,您可以浏览到此stackoverflow链接()以忽略许多情况。SuppressWarnings注释由Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})注释,因此您可以将其放入许多代码片段中,比如方法或类。