EqualsAndHashCode

leverest96·2022년 12월 28일
0

Spring / Java

목록 보기
10/20
post-thumbnail

기본 개념

  1. equals : 두 객체의 내용이 같은지, 동등선(equality)를 비교하는 연산자
  2. hashCode : 두 객체가 같은 객체인지, 동일성(identity)를 비교하는 연산자

@EqualsAndHashCode annotation을 사용하여 각자의 구현체를 한번에 적용시킬 수 있다.

이 때, 옵션이 몇 가지 있는데 내가 해당 annotation을 찾게 된 계기는 2가지이다.


기본 클래스를 아래로 가정하자.

public class TodoDto {
    private long id;
    private String value;
    private String userId;
    private Timestamp createdAt;
    private Timestamp updatedAt;
}

callSuper

true로 설정시 : 부모 클래스 필드 값들도 동일한지 체크
false로 설정시 : 자기 자신의 클래스의 필드 값만 고려(기본값)

@EqualsAndHashCode(callSuper = true)

onlyExplicitlyIncluded

원하는 필드만 필드에서 골라서 적용 가능

@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class User {
  @EqualsAndHashCode.Include
  private long id;
  ...
  @EqualsAndHashCode.Include
  private String userId;
  ...
}


+아래는 추가적인 2가지 정도...

of

특정 필드만 선택하여 equals, hashCode 메소드를 오버라이딩

@EqualsAndHashCode(of = {"id"})

exclude

특정 필드만 제외하고 equals, hashCode 메소드를 오버라이딩

@EqualsAndHashCode(exclude = {"userId", "createdAt", "updatedAt"})

https://junhyunny.github.io/information/java/equals-and-hashcode/

profile
응애 난 애기 개발자

0개의 댓글