zoukankan      html  css  js  c++  java
  • Javacontains方法

      来源于contains方法,因为它接受object作为参数,太宽松了,以至于不小心写错后,eclipse都无法提供错误提示,而且这种错误不会有异常,运行时也不会因错误而中断,是纯粹语义上的错误,这种错误在我看来是最可怕的。

      讲一下我的这个错误。

      我有一个HashSet<Integer> A;用来记录那些曾经被插入队列的节点(Vertex),对于一个新来的节点,如果不在A中,就插入队列。后来我发现这个队列无限制增长,折腾很久发现原因是这样的:

    while(!queue.isEmpty()){
       if(A.contains(node)){
          continue; 
       }
       if(XXX)
          A.add(node.getId());
          queue.add(node.getId());
       }
    }

    即插入A的是node的id,而检查时却检查了node本身,所以那个contains检查根本无效,但是eclipse不会告诉你这里有错误,警告也没有

    虽然这里似乎很容易看到contains和add的不一致,但是原来这两句距离很远,使得很难发现这个bug

  • 相关阅读:
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
  • 原文地址:https://www.cnblogs.com/fstang/p/2998951.html
Copyright © 2011-2022 走看看