Java의 레코드 클래스 소개

레코드 클래스는 일반 클래스보다 적은 코드로 일반 데이터 집계를 모델링하는 데 도움이 되는 미리 보기 기능으로 Java SE 14에 처음 도입되었습니다. 이 기능은 코드를 더 깔끔하게 만들 수 있을 뿐만 아니라 작업을 더 효율적으로 만들 수 있기 때문에 중요합니다.



다음은 Oracle의 레코드 클래스에 대한 공식 정의입니다.

A record class declares a sequence of fields, and then the appropriate accessors, constructors, equals, hashCode, and toString methods are created automatically. The fields are final because the class is intended to serve as a simple “data carrier”.




정의를 더 명확하게 이해하기 위해 일반 Java 클래스 구현과 Java 레코드 클래스 구현의 예를 볼 것입니다.

소스 코드 1:

public class Person {

    private final String name;
    private final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String name() {
        return name;
    }

    public int age() {
        return age;
    }

    @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);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public String toString() {
        return "Person[" +
                "name=" + name +
                ", age=" + age +
                ']';
    }
}


소스 코드 1은 일반적으로 모든 속성이 최종적인 표준 구현과 함께 일반 Java 클래스를 사용하여 생성된 Person 집계 클래스를 보여줍니다. , 및 equals 방법.

소스 코드 2:

public record Person(String name, int age) {}


소스 코드 2는 소스 코드 1과 동일한hashCode 집계 클래스의 구현을 보여주지만 자바 클래스 레코드를 사용합니다. 훨씬 적은 코드로 이 기능을 사용하여 동일한 결과를 얻을 수 있음을 알 수 있습니다.


레코드 클래스에서 객체를 생성하는 것은 toString 키워드를 사용하여 일반 Java 클래스에서 객체를 생성하는 것과 정확히 동일합니다. 레코드 클래스에서 객체를 생성하는 예는 소스 코드 3에서 볼 수 있습니다.

소스 코드 3:

Person person = new Person("Bob", 27);


그리고 소스코드 4와 같이 객체에 Person 메서드를 사용하려고 하면 출력 1과 같은 출력을 볼 수 있다.

소스 코드 4:

Person person = new Person("Bob", 27);
System.out.println(person.toString());


출력 1:

Person[name=Bob, age=27]



축하합니다. 방금 Java의 레코드 클래스 기능을 배웠습니다. 사용자 지정 메서드를 만드는 방법, 사용자 지정 생성자, 표준 생성자를 만드는 방법 등 이 문서에서 다루지 않은 레코드 클래스와 관련된 내용이 여전히 많이 있습니다. 이러한 내용은 다음 문서에서 설명하겠지만, Oracle의 공식 문서를 통해 직접 배우십시오: https://docs.oracle.com/en/java/javase/15/language/records.html


표지 이미지:

https://i.picsum.photos/id/955/1920/720.jpg?hmac=lnc4y4CILWRblCsnXbmfX0JmIEjni6rFGeo6JztfCJw

다른 이미지:

https://marco.dev/assets/img/uploads/2020/record_definition.png

좋은 웹페이지 즐겨찾기