Java 14에서 Records 클래스를 사용하여 equals() 및 hashCode() 메서드를 자동으로 생성하는 방법
Java 프로그래밍에서는 클래스에 대해 equals() 및 hashCode() 메서드를 작성해야 하는 경우가 많습니다. 이 두 가지 방법은 객체의 동일성 및 해시 코드를 처리할 때 매우 중요합니다. 이 프로세스를 단순화하기 위해 Java 14에는 새로운 Records 클래스가 도입되었습니다. Records 클래스는 equals() 및 hashCode() 메서드를 작성하는 간단한 방법을 제공하며 이 두 메서드의 구현은 클래스의 멤버 변수를 기반으로 자동으로 생성될 수 있습니다. 이 기사에서는 Java 14의 Records 클래스를 사용하여 equals() 및 hashCode() 메서드를 자동으로 생성하는 방법을 소개합니다.
먼저 간단한 예를 살펴보겠습니다. 이름과 나이라는 두 개의 멤버 변수가 있는 Person이라는 클래스가 있다고 가정합니다. 우리는 두 개의 Person 객체가 동일한지와 이를 생성한 해시 코드를 비교할 수 있기를 원합니다.
Java 14 이전에는 아래와 같이 equals() 및 hashCode() 메서드를 수동으로 작성해야 했습니다.
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Person person = (Person) obj; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(name, age); } }
위 코드는 Person 클래스의 equals() 및 hashCode() 메서드를 구현하지만 논리가 필요합니다. 멤버 변수가 동일한지 비교하고 해시 코드를 생성합니다.
이제 Records 클래스를 사용하여 이 프로세스를 단순화해 보겠습니다. Records 키워드를 직접 사용하여 클래스를 정의하고 해당 멤버 변수를 지정할 수 있습니다. 그런 다음 Records 클래스는 자동으로 equals() 및 hashCode() 메서드 구현을 생성합니다. 이 경우 다음 코드를 사용하여 Person 클래스를 정의할 수 있습니다.
public record Person(String name, int age) {}
네, 정말 간단합니다! 단 한 줄의 코드로 Records 클래스를 정의하고 자동으로 equals() 및 hashCode() 메서드 구현을 가져옵니다.
이제 확인해 보겠습니다.
public class Main { public static void main(String[] args) { Person person1 = new Person("Alice", 25); Person person2 = new Person("Alice", 25); Person person3 = new Person("Bob", 30); System.out.println(person1.equals(person2)); // 输出:true System.out.println(person1.equals(person3)); // 输出:false System.out.println(person1.hashCode()); // 输出:2035395 System.out.println(person2.hashCode()); // 输出:2035395 System.out.println(person3.hashCode()); // 输出:66181377 } }
보시다시피 Records 클래스를 사용하면 두 Person 개체의 동등성을 쉽게 비교하고 해시 코드를 생성할 수 있습니다. Person 클래스의 equals() 메소드는 두 멤버 변수 name과 age의 동일성을 자동으로 비교하고 hashCode() 메소드는 이름과 age를 기반으로 해시 코드를 자동으로 생성합니다.
또한 Records 클래스는 객체를 인스턴스화하고 멤버 변수를 통해 해당 값에 액세스하는 데 사용할 수 있는 생성자를 제공합니다. 예를 들어, person.name과 person.age를 통해 Person 객체의 이름과 나이에 접근할 수 있습니다.
요약하자면, Records 클래스를 사용하여 Java 14에서 equals() 및 hashCode() 메서드를 자동으로 생성하는 것은 매우 간단하고 편리한 방법입니다. 한 줄의 코드로 Records 클래스를 정의하기만 하면 객체가 동일한지 쉽게 비교하고 해시 코드를 생성할 수 있습니다. 자동으로 생성된 이 방법은 코드 작성을 크게 단순화하고 개발 효율성을 향상시킵니다. 이로 인해 Records 클래스는 Java 14에서 매우 유용한 기능이 되었습니다.
위 내용은 Java 14에서 Records 클래스를 사용하여 equals() 및 hashCode() 메서드를 자동으로 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!