在我的下面的代码中,我检查两个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")
信息编码返回整数。
有谁能告诉我如何解决这个问题?
由于
答案 0 :(得分:5)
您正在比较对象 - Integer
s,==
运算符可能仅适用于[-128,127]之间的数字。看看JLS:
如果框中的值p为true,false,则为字节或字符 范围\ u0000到\ u007f,或介于-128和127之间的int或短数字 (包括),然后让r1和r2成为任意两个拳击的结果 转换p。始终是r1 == r2。
的情况
由于您所比较的值不在上述范围内,因此结果将评估为false
。您应该使用Integer#equals
代替。
答案 1 :(得分:2)