@EqualsAndHashCode annotation을 사용하여 각자의 구현체를 한번에 적용시킬 수 있다.
이 때, 옵션이 몇 가지 있는데 내가 해당 annotation을 찾게 된 계기는 2가지이다.
기본 클래스를 아래로 가정하자.
public class TodoDto { private long id; private String value; private String userId; private Timestamp createdAt; private Timestamp updatedAt; }
true로 설정시 : 부모 클래스 필드 값들도 동일한지 체크
false로 설정시 : 자기 자신의 클래스의 필드 값만 고려(기본값)
@EqualsAndHashCode(callSuper = true)
원하는 필드만 필드에서 골라서 적용 가능
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class User {
@EqualsAndHashCode.Include
private long id;
...
@EqualsAndHashCode.Include
private String userId;
...
}
+아래는 추가적인 2가지 정도...
특정 필드만 선택하여 equals, hashCode 메소드를 오버라이딩
@EqualsAndHashCode(of = {"id"})
특정 필드만 제외하고 equals, hashCode 메소드를 오버라이딩
@EqualsAndHashCode(exclude = {"userId", "createdAt", "updatedAt"})
https://junhyunny.github.io/information/java/equals-and-hashcode/