[JAVA 문법] Record Class

su_y2on·2022년 4월 4일
1

JAVA

목록 보기
13/14
post-thumbnail

Record은 무엇인가

Record는 enum과 같은 특별한 형태의 class입니다. 주로 간단하게 데이터를 저장하고 옮기는 역할로 쓰입니다. records는 일반 class와는 다르게 생성자, getter, hashCode(), equals() ,toString()를 제공해줍니다. 물론 custom이 필요하다면 record안에 정의해서 사용할 수 있습니다





문법

먼저 이렇게 record라는 키워드를 붙여서 만들어줍니다. record안에 어떤 정의가 없어도 위에서 설명했듯이 기본적으로 여러 기능들을 제공해줍니다.

public record User(Long id, 
        String Name,
        String email, 
        int age) { }

따라서 바로 아래와 같은 실행이 가능합니다. 엄청난일이네요...🧐


public class RecordExample {
  public static void main(String[] args)
  {
    User user = new User
        (1l, "judy", "judy@example.com", 30);
 
    System.out.println(user.id());
    System.out.println(user.email());
 
    System.out.println(user);
  }
}

출력결과

1
judy@example.com
UserRecord[id=1, Name=judy ,
      email=judy@example.com, age=30]





특징

  1. 생성자는 모든 field를 포함합니다

  2. toString()도 모든 field를 포함합니다.

  3. equals(), hashCode() 메서드는 invokedynamic based mechanism을 사용합니다.

  4. getter는 field이름과 유사한 이름으로 생성됩니다 ex) id(), email()..

  5. 기본적으로 java.lang.Record class를 상속받기 때문에 다른 class를 상속받을 수 없습니다.

  6. class가 final이기 때문에 다른 subclass를 생성할 수 없습니다.

  7. 모든 field는 불변이기 때문에 setter는 제공하지 않습니다.





그래서 어디에 쓰죠?

  1. DTO(data transfer object)나 domain model class에 사용하면 좋습니다

  2. 일시적으로 데이터를 저장할 때 사용합니다

  3. 데이터를 저장하고싶지만 긴 코드를 작성하고 싶지는 않을 때 사용하면 좋습니다

  4. 불변적인 데이터를 저장할 때 적합합니다

2개의 댓글

comment-user-thumbnail
2024년 9월 17일

좋은 설명 감사합니다.~

답글 달기
comment-user-thumbnail
2024년 10월 14일

잘 배우고 갑니다!

답글 달기