저는 equals 메서드를 이해하려고합니다. 난 그냥 동작 만보고 사용자 정의 클래스에서이 메소드를 오버라이드 인해 무한 loop.I에 메모리 오류 벗어나 려 알고 오버라이드 (override)하는 계약 방법 1) 재귀 2) 대칭 3) 트랜 4) 일관된 동일 당신은 재귀 적 equals
방법을 요구하고있다OutOfMemoryError는 equals 메서드 구현으로 인해 무한 루프로 인해 발생합니다.
public class Reflexivity
{
public static void main(String[] args) {
Reflexivity reflexivity = new Reflexivity();
Reflexivity reflexivity1 = new Reflexivity();
System.out.println(reflexivity.equals(reflexivity1));
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Reflexivity)) {
return false;
}
// TODO Auto-generated method stub
return this.equals(obj);
}
}
당신의'this.equals (obj)'가 무한 루프를 일으키고 있습니다. – Oswald
그냥'OutOfMemoryError'가 아니라'StackOverflowError'를 얻어야한다는 것을 지적하고 싶습니다. 객체가 생성 된 경우에만 OOME을 얻습니다. 'equals' 메쏘드로 아무 것도 생성되지 않습니다. –