在我下面的代码中,我检查两个infocode是否存在,显示为msg MSG_SAME_INFO_ALREADY_EXISTS,但问题是当我比较两个infocode时,信息代码值相同,但无法进入循环。

我在下面的代码中错了吗?

if (folderInfoData.getFolderInforecord().getInfoCode() == map.get("infoCode")) {
    showError(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
    return;
    }


两种Debug值如下:

folderInfoData.getFolderInforecord().getInfoCode()map.get("infoCode")信息代码均返回下面给出的整数。




谁能告诉我如何解决这个问题?

谢谢

最佳答案

您正在比较对象-Integers==运算符可能仅适用于[-128,127]之间的数字。查看JLS


  如果装箱的值p为true,false,字节或char中的char
  范围\ u0000到\ u007f,或者-128到127之间的整数或短数
  (含),然后令r1和r2为任意两个装箱的结果
  p的转换。 r1 == r2总是这样。


由于您要比较的值不在上述范围内,因此结果将被评估为false。您应该改为使用Integer#equals

10-04 14:42