@Data,@EqualsAndHashCode이 두 개의 어노테이션들은 Lombok 라이브러리에서 제공하는 어노테이션이다.
이 어노테이션을 사용할 때 워닝이 발생 할 수 있다.
❗warning
warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.@Data
-> 상속을 받는 클래스에 @Data 를 사용하는 경우 @EqualsAndHashCode를 따로 선언해서 설정해줘야한다고 워닝이 뜸
어노테이션을 추가하면 되지만 왜 필요할까?
@Data 어노테이션은 아래와 같은 어노테이션을 포함하고 있다.
위와 같이 @Data는 @EqualsAndHashCode를 포함하고 있는데, 만약 상속 구조라면 부모 클래스의 필드를 포함해서 EqualsAndHashCode를 생성할지, 자식 클래스만 대상으로 생성할지 Lombok이 보기에 불분명하기 때문에 우선 callSuper 옵션 값의 default 인 false로 만들긴하지만 워닝을 띄운다.
@EqualsAndHashCode(callSuper = true)
위 어노테이션을 붙여주지 않으면, 부모 클래스의 필드를 제외하고 @EqualsAndHashCode를 생성해서 발생하는 워닝이다.
마치며
@Data는 사용을 지양하라고 한다.. 게터세터를 활용하자...