[Java] Record

ichubtou·2024년 1월 14일
0

Java - Record

  • 불변(immutable) 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스
  • JDK14에서 preview로 등작하여 JDK16에서 정식 스펙에 포함

기존의 불변 데이터 객체

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 getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

상태(name, age)를 보유하는 불변 객체를 생성하기 위한 많은 코드 작성하는데

레코드를 이용하여 위의 작업을 생략할 수 있다.


레코드를 이용한 불변 객체

public record Person(String name, int age) {
}
  • 레코드를 클래스를 사용하여 훨씬 간결한 방식으로 동일한 불변 데이터 객체 정의 가능
  • 컴파일러는 헤더를 통해 내부 필드를 추론
  • 생성자 작성과 toString, equals, hashCode 메서드에 대한 구현을 자동으로 제공
  • getter 메서드 구현 또한 자동으로 제공하는데 .getName(), .getAge() 형식이 아닌 .name(), .age() 이와 같은 방식으로 제공

레코드의 제약사항

  • 레코드는 다른 클래스를 상속받을 수 없으며, private final fields 이외의 인스턴스 필드를 선언할 수 없다
  • 선언되는 다른 모든 필드는 static 이어야 한다.

0개의 댓글