Record Class

leverest96·2023년 7월 20일
0

Spring / Java

목록 보기
16/20
post-thumbnail

기존에 항상 dto를 일반 클래스로 만들고 필드에 final 키워드를 붙여왔다. 하지만 프로젝트를 하던 도중 record 클래스에 대한 존재를 깨달았다.

Record란?

Record란 자바에서 불변한 데이터를 저장하는 것에 사용되는 클래스이다.

아래 특징에서 알아보겠지만 dto를 생성할 때에 상당히 유용해보인다.

Record의 특징

  1. 암묵적으로 어떤 클래스도 상속 받을 수 없다.

    • record 클래스의 슈퍼 클래스는 java.lang.Record이며 이외에는 그 어떤 것도 슈퍼 클래스가 될 수 없다.
  2. 암묵적으로 class에 final 키워드가 붙어있으며 abstract가 포함될 수 없다.

  3. record의 요소로 들어있는 파라미터들에는 모두 final 키워드가 붙어있다.

    • 불변성이 필요한 데이터 이동용 클래스들을 위해 기본적으로 불변성을 보장해준다.
    • 하지만 final이기 때문에 setter 사용은 불가능하다.
  4. 인스턴스 필드를 선언할 수 없기 때문에 record의 파라미터가 그 자체로 그 값이다.

    • 하지만 정적 변수나 메서드는 선언할 수 있다. (static)
  5. 컴팩트 생성자와 같은 파라미터를 가진 생성자를 함께 작성하면 컴파일 에러가 난다.

    • 여기서 컴팩트 생성자를 처음 봤다.
    • 이후에 찾던 도중 발견한 것인데 record class에서만 사용하는 생성자인듯하다.
  6. 자동 생성

    • record 클래스의 필드에 대한 전체 생성자가 자동으로 만들어준다.
    • 필드 이름과 일치하는 getter 메서드를 자동으로 만들어준다.
      • 단, 이름은 getXxx()가 아닌 xxx()이다.
        • 예시 : getName()이 아닌 name()
    • equals(), hashCode(), toString() 모두 자동으로 생성해준다.

https://www.baeldung.com/java-record-keyword
https://openjdk.org/jeps/395

profile
응애 난 애기 개발자

0개의 댓글