[java] @EqualsAndHashCode 어노테이션을 사용하여 객체의 동등성을 어떻게 구현할 수 있나요?
@EqualsAndHashCode 어노테이션은 Lombok 라이브러리에서 제공하는 기능으로, 객체의 동등성을 자동으로 구현해줍니다.
이 어노테이션을 사용하기 위해서는 먼저 Lombok 라이브러리를 프로젝트에 추가해야 합니다. 이후 동등성을 구현하고자 하는 클래스에 @EqualsAndHashCode 어노테이션을 붙여주면 됩니다.
@EqualsAndHashCode 어노테이션은 클래스의 모든 필드들을 기반으로 동등성을 판단합니다. 이때 두 객체의 모든 필드들이 일치하는 경우에만 동등한 객체로 간주됩니다. 자동으로 equals()와 hashCode() 메서드를 생성해주기 때문에, 두 객체의 동등성을 판단할 때 equals() 메서드를 호출하거나 해시값을 계산할 때 hashCode() 메서드를 사용할 수 있습니다.
다음은 @EqualsAndHashCode 어노테이션을 사용하여 동등성을 구현하는 예제입니다:
import lombok.EqualsAndHashCode;
@EqualsAndHashCode
public class Person {
private String name;
private int age;
private String address;
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person();
person1.setName("John");
person1.setAge(30);
person1.setAddress("123 Main Street");
Person person2 = new Person();
person2.setName("John");
person2.setAge(30);
person2.setAddress("123 Main Street");
System.out.println(person1.equals(person2)); // true
System.out.println(person1.hashCode() == person2.hashCode()); // true
}
}
위 예제에서는 Person 클래스에 @EqualsAndHashCode 어노테이션을 적용하여 동등성을 구현하였습니다. person1과 person2 객체는 모든 필드들이 일치하기 때문에 동등한 객체로 간주됩니다. 따라서 equals() 메서드를 호출하면 true를 반환하고, hashCode() 메서드를 호출하여 계산한 해시값도 일치합니다.