equals정의하는법

    [Effective Java] equals는 일반 규약을 지켜 재정의하라

    equals의 재정의가 필요 없는 경우 다음과 같은 상황에서는 equals 메서드의 재정의가 필요하지 않다. 각 인스턴스가 본질적으로 고유하다. => 값을 표현하는 것이 아니라 동작하는 개체를 표현하는 클래스가 해당된다. => Thread가 좋은 예로 Object의 equals는 이러한 클래스에 딱 맞게 구현되어 있다. 인스턴스의 논리적 동치성을 검사할 일이 없다. 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다. 클래스가 private이거나 package-private이고 equals 메서드를 호출할 일이 없다. 다음과 같이 equals가 실수로 호출되는 것을 막을 수 있다. @Override public boolean equals(Object o) { throw new Asser..