Я вижу странную проблему. У меня есть объект, который имеет несколько переменных экземпляра, один из которых является числовым. Этот объект вышел из сокета с помощью readObject() ObjectInputStream, поэтому его нужно было десериализовать. Однако, когда я сравниваю его с другим объектом, который имеет то же самое число для этого поля, используя ==, он не совпадает. Примечание. Я не сравниваю объекты, просто переменную экземпляра integer, используя getter. Печатные заявления перед сравнением показывают, что они точно такие же.Java: Равные числа, не соответствующие
System.out.println("New book id:"+newBook.getId());
for (Book p: listOfBooks) {
System.out.println("CurrentBook's id:"+p.getId());
if (newBook.getId() == p.getId()) {
System.out.println("Matched CurrentBook's id:"+p.getId())
}
}
Спасибо Тед Хопп, да, я предполагаю, что поведение непоследовательно Integer сравнения с ==. Я понял, что поля были Integer, а не int, и это работало раньше, поэтому было очень запутанно, почему он больше не работал.
Пожалуйста, укажите код, чтобы мы могли диагностировать. Здесь нечего уходить – torquestomp
'==' просто сравнивает ссылку объекта с другим. Вам необходимо реализовать метод 'obj1.equals (obj2)' для сравнения внутренних данных. – Supericy
Это может быть вашей проблемой? http://stackoverflow.com/questions/10149959/using-operator-in-java-to-compare-wrapper-objects – sarahTheButterFly