Sit*_*nsu 1 java integer equals record map
在我的下面的代码我检查两个infocode如果它存在显示msg MSG_SAME_INFO_ALREADY_EXISTS但问题是,当我比较两个信息infocode编码值相同但它不能进入循环.
我在下面的代码中错了什么?
if (folderInfoData.getFolderInforecord().getInfoCode() == map.get("infoCode")) {
showError(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
return;
}
Run Code Online (Sandbox Code Playgroud)
两个Debug值都给出如下:
下面给出了both folderInfoData.getFolderInforecord().getInfoCode()和 map.get("infoCode")infocode返回的整数.

谁能告诉我怎么解决这个问题?
谢谢
您正在比较对象 - Integers,==运算符可能仅适用于[-128,127]之间的数字.看看JLS:
如果被装箱值p为真,假,字节,或在范围\ u0000的一个char到\ u007f,或int或-128和127(含)之间的短号码,然后让r1和r2是的结果p的任何两个拳击转换.始终是r1 == r2的情况.
由于您所比较的值不在上述范围内,因此将对结果进行评估false.你应该使用Integer#equals.