Код:.equals() и == в Java на Integer (== работал, но .equals не !!)
call.getUserId().equals(ITConstants.SPECIALID)
public static final Integer SPECIALID= 0;
POJO:
public class ImCall implements java.io.Serializable {
private Integer userId;
HBM:
<property name="userId">
<column name="USER_ID" />
</property>
MySQL:
int(11) is the datatype in MySQL
Когда UserId был равен нулю. .Equals() "не работал (возвращается false), но на удивление работает" == "(возвращается true). Я думал, что это из-за некоторых проблем в Tomcat Server.Также я очистил его и перезапустил. Эта же проблема.
Но снова через пару дней проблема, о которой я упоминал выше, не повторилась. Но теперь оба == и .equals() работают!
Итак, мой первый вопрос: существует ли ситуация, когда «==» работает, а «.equals()» - нет. Второй вопрос: почему «==» возвращает true в этом случае?
Редактировать:
Getters return Integer only.
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
Покажите, каковы ваши значения и каков ожидаемый результат. Я, например, не уверен на 100%, что 'call.getUserId()' возвращает 'Integer', он * может * возвращать' int'. – skiwi
@skiwi Getters возвращает целое число.Пожалуйста, см. Мое редактирование – user104309