본문 바로가기
IT/Java

자바 레코드(Record)

by 성준하이 2022. 12. 22.
반응형

레코드(record)란 "데이터 클래스"이며 순수하게 데이터를 보유하기 위한 특수한 종류의 클래스이다.

코틀린의 데이터 클래스와 비슷한 느낌이라고 보면 된다.

record 클래스를 정의할때, 그 모양은 정말 데이터의 유형만 딱 나타내는 듯한 느낌이다.

훨씬더 간결하고 가볍기 때문에 Entity 혹은 DTO 클래스를 생성할때 사용되면 굉장히 좋을 듯 하다.

 

예제 코드는 다음과 같다.

두개의 샘플 코드는 같은 동작을 하는 클래스와 레코드이다.

Class
public class TestClass{
     private final String id;
     private final String name;

    public TestClass(String id, String name){
        this.id = id;
        this.name = name;
    }

    public String getId(){
        return id;
    }

    public String getName(){
        return name;
    }

이런 getter 를 갖고있는 class를 아래와 같이 간결하게 가능하다.

 

Record
public record TestRecord(
    String id,
    String name
){}

 

레코드의 특성은 다음과 같다.

  • record는 final 클래스라서 상속이 불가능
  • 모든 필드는 private final로 정의 됨
  • 모든 필드를 초기화 하는 RequiredAllArgument 생성자 생성 됨
  • 각 필드의 getter 는 getId() 가 아니라 필드명 이름 그대로 getter()  가 된다 (name(), id())

jackson annotation 관련해서도 정의 가능하고

validation 로직을 넣을수도 있다.

반응형

댓글