在我下面的代码中,我检查两个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")
信息代码均返回下面给出的整数。谁能告诉我如何解决这个问题?
谢谢
最佳答案
您正在比较对象-Integer
s,==
运算符可能仅适用于[-128,127]之间的数字。查看JLS:
如果装箱的值p为true,false,字节或char中的char
范围\ u0000到\ u007f,或者-128到127之间的整数或短数
(含),然后令r1和r2为任意两个装箱的结果
p的转换。 r1 == r2总是这样。
由于您要比较的值不在上述范围内,因此结果将被评估为false
。您应该改为使用Integer#equals
。