>  기사  >  Java  >  Java 14에서 Records 클래스를 사용하여 equals() 및 hashCode() 메서드를 자동으로 생성하는 방법

Java 14에서 Records 클래스를 사용하여 equals() 및 hashCode() 메서드를 자동으로 생성하는 방법

PHPz
PHPz원래의
2023-07-31 13:52:511365검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.