레코드
포스트
취소

레코드

레코드란?

  • 불변 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스
  • 레코드는 암묵적으로 상속할 수 없는 final 클래스다.
  • abstract 키워드를 사용할 수 없다.
  • 다른 클래스를 상속 받을 수는 없지만, 인터페이스 구현은 가능하다.
  • Java 16부터 제공

기존의 불변 데이터 객체 작성 방법

public class Person {
    private final String name;
    private final String address;
    
    public Person(String name, String address) {
        this.name = name;
        this.address = address;
    }
    
    public String getName() {
        return name;
    }
    
    public String getAddress() {
        return address;
    }
}

레코드 작성 방법

public record Person(String name, String address) {}

기존 불변 클래스와 레코드의 작성법 차이

  • 불변 클래스
    • 모든 필드에 final을 사용하여 명시적으로 정의
    • 필드 값을 모두 포함한 생성자
    • 모든 필드에 대한 접근자 메서드
    • 상속을 방지하기 위해 클래스 자체를 final로 선언
    • 로깅 출력을 제공하기 위한 toString 재정의
    • 두 개의 인스턴스를 비교하기 위한 hashCode, equals 재정의
  • 레코드
    • 컴파일러는 헤더를 통해 내부 필드를 추론
    • 생성자를 작성하지 않아도 되고 toString, equals, hashCode 메소드를 자동으로 구현

레코드 사용 예시

//레코드 작성 예시
public record Person(String name, String address) {}

//레코드 사용 예시
String name = "HongGilDong";
String address = "JoSeon";

Person person = new Person(name, address);

//getter는 변수명()처럼 사용한다.
System.out.println("이름 : " + person.name());
System.out.println("주소 : " + person.address());
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.