[JAVA] record

현서황·2024년 9월 20일

JAVA

목록 보기
15/16

데이터를 저장하기 위한 불변한 데이터 클래스를 정의하는데 사용되는 새로운 클래스 유형이다.

레코드의 특징

  1. 자동 생성 메서드 : 레코드를 선언하면 자바 컴파일러가 자동으로 생성자, getter, equals(), hashCode(), toString() 메서드를 생성한다.
  2. 불변성 : 레코드는 불변객체로 설계되어 있으며, 필드 값은 한 번 설정되면 변경할 수 없다.
  3. 간결함 : 기존의 일반 클래스와 달리, 데이터 저장과 관련된 기본적인 메서드들이 자동으로 생성되므로 중복 코드가 줄어든다.

레코드 선언 방식

레코드는 record 키워드를 사용해 선언된다. 클래스와 비슷하게 필드를 선언한다. 각 필드는 자동으로 private final 필드로 간주되며, 자동으로 getter 메서드가 생성된다.

public record Person(String name, int age) {}
Person person = new Person("Alice", 30);
// person.name = "Bob";  // 컴파일 에러: 레코드의 필드는 변경할 수 없음

레코드의 필드는 자동으로 private final로 선언되기 때문에 필드 값을 변경할 수 없다. 즉, 레코드의 필드는 한 번 설정되면 재할당이 불가능하며, 이를 통해 레코드 객체는 불변성을 갖게된다.
그래서 setter 메소드는 제공되지 않는다.


레코드의 용도

  • 데이터 저장 : 주로 데이터를 간단하게 저장하기 위한 용도로 사용된다. 예를 들어, DTO나 값 객체로 사용될 수 있다.
  • 불변객체 : 레코드는 불변성을 갖기 때문에 상태가 변경되지 않는 객체를 표현할 때 유용하다.
  • 간결한 데이터 구조 : 기존에 일반 클래스를 사용해 데이터 구조를 정의할 때의 번거로움을 줄여준다. 불필요한 코드를 줄이고 핵심적인 데이터만 선언하면 되므로 코드가 간결해진다.
profile
노는 게 제일 좋은 뽀로로

0개의 댓글