Java - Record

조경찬 (Jo Gyungchan)·2023년 10월 25일
0

자바

목록 보기
3/5
post-thumbnail

Record란

  • 불변 데이터 객체를 쉽게 생성해주는 새로운 클래스이다.

잘 사용할 수 있다면 확실히 코드가 깔끔해지고, 편리하게 사용 가능할 것 같아 보입니다.

그럼 Record 클래스를 이해하기 쉽게 코드를 통해 알아봅시다.

public class User {
    private final String name;
    private final int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

위와 같이 User라는 객체가 있고, 이를 나타내는 변수로 name, age가 있다고 해보자.
이 코드를 record로 한번 바꿔보면 다음과 같다.

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

놀랍게도 이렇게 간단히 구현이 완료된다.
심지어 equals, hashcode, toString을 자동으로 생성해주기 때문에 더 많은 기능을 제공해준다고 말할 수 있다.

Record 구조


레코드 클래스의 구조는 위에 코드를 통해 알 수 있듯이,
class 대신 record라 선언하고 레코드명(헤더) {바디} 구조를 이루고 있다.

이렇게 축약할 수 있는 이유는 컴파일러가 헤더를 통해 내부 필드를 추론하기 때문인데, 추론한 내부 필드를 통해 자동으로 equals, hashCode, toString, getter 메서드를 생성해주는 것이다.

여기서 한가지 주의할 점이 있는데, getter 메서드는 필드명을 통해 사용한다.

// 일반적인 getter 메서드
String name = user.getName();

// Record 클래스에서는 필드명으로 접근
String name = user.name();

Record 특징


이러한 레코드의 특징으로는,

  • 헤더를 통해 각 필드를 추론하고, private final로 선언된다.
  • getter, equals, hashcode, toString이 자동으로 생성된다.
  • 다른 클래스를 상속하거나/상속시킬 수 없다.
  • 레코드 내부에 멤버 변수를 선언할 수 없다.

📝 마치면서


아직 많이 사용해보진 않았지만 Record 클래스에 익숙해져서 잘 사용해지길 바라며 여기서 글을 마무리하겠습니다.

profile
한걸음씩 성장하는 개발자

0개의 댓글