상속이 있는 @Data 주석 lombok의 warning equals/hashCode
나는 다른 것들로부터 상속받는 실체를 가지고 있다.한편, 저는 보일러 코드를 줄이기 위해 롬복 프로젝트를 사용하고 있기 때문에@Data주석입니다.주석@Data상속이 있는 경우 다음 경고가 발생합니다.
이 클래스가 java.lang을 확장하지 않더라도 equals/hashCode 구현을 생성하지만 슈퍼클래스에 대한 호출은 없습니다.오브젝트. 의도적이라면 추가한다.
@EqualsAndHashCode(callSuper=false)니 타입에 맞게.
주석을 추가하는 것이 좋습니까?@EqualsAndHashCode (callSuper = true)또는@EqualsAndHashCode (callSuper = false)추가되지 않은 경우, 어느 쪽입니까?
기본값은 다음과 같습니다.false지정하지 않고 경고를 무시하면 이 메시지가 나타납니다.
네, 다음 명령어를 추가할 것을 권장합니다.@EqualsAndHashCode에 대한 주석@Data오브젝트가 아닌 다른 것을 확장하는 주석이 달린 클래스.필요하시면 말씀드릴 수 없습니다.true또는false클래스 계층에 따라 다르며 케이스 바이 케이스로 검사해야 합니다.
그러나 프로젝트 또는 패키지의 경우lombok.config오브젝트의 직접 서브클래스가 아닌 경우 슈퍼 메서드를 호출합니다.
lombok.equalsAndHashCode.callSuper = call
이 동작에 대해서는, 설정 시스템의 메뉴얼과 서포트되고 있는 설정 키의 메뉴얼을 참조해 주세요.
공개:저는 롬복 개발자입니다.
@EqualsAndHashCode(callSuper=true)이 경고를 해결합니다.
첫 번째 주요 질문은 다음과 같습니다.
주석 @EqualsAndHashCode(call Super = true) 또는 @EqualsAndHashCode(call Super = false)를 추가하는 것이 좋습니까?
일반적으로 받아들여지는 대답은 다음과 같습니다.
...그건...
이에 대한 자세한 내용은 @EqualsAndHashCode에 기재되어 있는 문서를 참조해 주십시오.특히 IMHO:
call Super를 true로 설정하면 생성된 메서드에 슈퍼클래스의 equals 메서드와 hash Code 메서드를 포함할 수 있습니다.hashCode의 경우 super.hashCode()의 결과가 해시 알고리즘에 포함되어 있습니다.또한 슈퍼 실장이 전달된 객체와 다르다고 판단하면 생성된 메서드는 false를 반환합니다.모든 동등한 구현이 이 상황을 적절하게 처리하는 것은 아니라는 점에 유의하십시오.단, 롬복 생성 등가 구현은 이 상황을 적절하게 처리하므로 슈퍼클래스도 롬복 생성 등가 메서드를 가지고 있다면 안전하게 호출할 수 있습니다.
이를 좀 더 자세히 설명하자면:상태 정보가 없거나 자체에서 @Data 주석을 사용하거나 "상황이 적절하게 해결"되는 equals/module 구현이 있는 슈퍼 클래스에서 상속하는 경우 'callSuper=true'를 선택합니다.이것은 상태 값의 올바른 해시를 반환하는 것으로 해석됩니다.
슈퍼클래스의 멤버도 비교하려면@EqualsAndHashCode(callSuper=true)그러나 현재 클래스의 필드만 비교하고 싶은 경우@EqualsAndHashCode(callSuper=false)기본 옵션입니다.
Delombok 기능을 사용하면 다음과 같이 설정했을 때 차이가 있음을 알 수 있습니다.true이 행은 생성된 등호 메서드에 추가됩니다.if (!super.equals(o)) return false;두 개체를 비교할 때 고려해야 하는 슈퍼클래스의 멤버가 있는 경우 올바르게 비교하려면 true로 설정해야 합니다.
언급URL : https://stackoverflow.com/questions/38572566/warning-equals-hashcode-on-data-annotation-lombok-with-inheritance
'programing' 카테고리의 다른 글
| PHP에서 try...catch 블록을 효율적으로 사용하는 방법 (0) | 2022.11.04 |
|---|---|
| require, include, require_once와 include_once의 차이는 무엇입니까? (0) | 2022.11.04 |
| SQL: 주어진 모든 값을 가진 그룹만 선택하려면 어떻게 해야 합니까? (0) | 2022.11.04 |
| XSD에서 JAXB 클래스를 생성하는 방법 (0) | 2022.11.03 |
| django order_by 쿼리 세트, 오름차순 및 내림차순 (0) | 2022.11.03 |