이상한 문제가 있습니다. 객체가 하나 있는데, 인스턴스 변수 중 하나는 숫자입니다. 이 객체는 ObjectInputStream의 readObject()를 사용하여 소켓에서 나왔기 때문에 직렬화가 해제되어 있어야합니다. 그러나, 그 필드에 대해 정확히 같은 숫자를 가진 다른 오브젝트와 비교할 때 ==를 사용하면 일치하지 않습니다. 참고 : 객체를 비교하지 않고 정수 인스턴스 변수 만 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())
}
}
감사합니다. Ted Hopp, 네, 동작이 ==와 정수 비교시 일치하지 않는 것 같습니다. 필드가 int가 아닌 Integer이고 이전에는 작동 했으므로 더 이상 작동하지 않는 이유가 매우 혼란 스러웠습니다.
코드를 입력하십시오 사용하기 전에 원시 값 (
int
,long
등)을 추출한다. 여기서 벗어날 것이 아무것도 없다. – torquestomp'=='그냥 객체의 참조를 다른 것과 비교하는 것이다. 내부 데이터를 비교하려면'obj1.equals (obj2)'메소드를 구현해야한다. – Supericy
이것이 문제가 될 수 있습니까? http://stackoverflow.com/questions/10149959/using-operator-in-java-to-compare-wrapper-objects – sarahTheButterFly