[Spring] @EqualsAndHashCode
2024. 11. 25. 03:34ㆍ프로그래밍/Spring Boot
@Data 어노테이션에서도 다뤘었던 내용이다.
(참고: https://kite-u.tistory.com/107 )
간단히 설명하자면,
Equals와 HashCode 메서드 기능을 둘 다 제공 가능하는 어노테이션이다.
어노테이션을 사용하지 않을 때
import java.util.Objects;
public class Person {
private String name;
private int age;
// 자동 생성된 equals()
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
// 자동 생성된 hashCode()
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
어노테이션을 사용할 때
import lombok.EqualsAndHashCode;
@EqualsAndHashCode
public class Person {
private String name;
private int age;
// 생성자, 게터, 세터 등...
}
그 중 of 옵션은 hashCode에서 특정 필드를 지정하는 데에 사용된다.
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(of = {"name", "age"})
public class Person {
private String name;
private int age;
private String address; // 이 필드는 equals()와 hashCode()에서 제외됨
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
}
위의 예시에서는 Person의 name과 age 필드에 대하여 equal과 hashcode 메서드가 적용되는 경우이다.
'프로그래밍 > Spring Boot' 카테고리의 다른 글
[Spring] 예외 처리 ExceptionHandler (0) | 2024.11.29 |
---|---|
[Spring] ResponseEntity에서 객체를 반환할 때 new 연산자 사용 (0) | 2024.11.26 |
[Security] 스프링 시큐리티(Spring Security) 살펴보기 (0) | 2024.11.11 |
[Spring] Lombok Annotation에서의 Data (0) | 2024.11.04 |
[Spring] Thread API - sleep() vs wait() (0) | 2024.10.01 |