Item 10. equals는 일반 규약을 지켜 재정의(오버라이딩)하라
equals
public boolean equals(Object obj) {
return (this == obj);
}equals를 오버라이딩해야 할 때?
물리적 동일성이 아닌 논리적 동일성을 판단해야 하는 클래스일 때
public static void main(String[] args) { Integer n1 = new Integer(10); Integer n2 = new Integer(10); System.out.println(n1 == n2); System.out.println(n1.equals(n2)); }false truepublic boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
하위 클래스가 상위 클래스의 equals 만으로 동일성을 판단할 수 없는 경우
equals를 오버라이딩할 때 준수해야 할 규약
equals 오버라이딩의 좋은 예
Last updated