본문 바로가기
개발/JAVA

JAVA 14 - Record Class

by zuzuu 2025. 2. 3.
반응형

Record Class란?

Java 14에서 Record 클래스가 도입되었다.

Record는 Java에서 불변(immutable) 데이터 클래스를 간단하게 만들기 위한 새로운 클래스 유형안데, 객체를 정의할 때 필요한 반복적인 코드 (예: 생성자, getter, equals(), hashCode(), toString() 메서드 등)를 자동으로 생성줘서 간단하게 사용가능하다.

클래스 이름 앞에 record 키워드를 붙이기만 하면 된다.

public record Person(String name, int age) {}

name과 age라는 두개의 속성을 갖는 불변 객체이며, Java compiler 는 record 선언 시 아래 항목들을 생성한다.
기본 생성자가 자동으로 생성되지 X. Record는 모든 필드를 생성자의 매개변수로 요구하므로, 기본 생성자는 제공하지 않는다.


Field

  • private
  • final
  • public constructor

Method

  • getter
  • toString
  • equals
  • hashCode

 

장점

  •  간단하고 직관적인 문법 & 자동 생성되는 메서드
    Record는 불변 객체를 쉽게 만들 수 있는 문법을 제공! 기존에는 getter, setter, toString(), equals(), hashCode() 등을 수동으로 작성해야 했지만, Record는 이를 자동으로 생성해 주기 때문에 코드가 간결해짐
  • 불변 객체 (Immutable Object)
    객체를 생성한 후 필드 값을 변경할 수 없기 때문에 데이터의 무결성을 보장. 모든 필드는 final.

단점

  • 불변 객체만 지원
  • 상속 불가능 : 이미 Record 클래스를 상속받고 있기 때문에 상속 불가능.
final class com/test/Person extends java/lang/Record {

 

  • 인터페이스 구현 제한
    인터페이스는 구현 클래스에 구현 메서드를 추가할 수 있기 때문에, Record의 불변성을 해칠 수 있음.
    예를 들어, Record에서 구현한 인터페이스의 메서드가 객체 상태를 변경하는 메서드를 포함하면 Record의 불변성이 깨질 수 있음

728x90
반응형

댓글