계발자 블로그

[Java] Record 본문

Java

[Java] Record

더구더구 2025. 8. 6. 23:23

Record란?

어느날 자바 프로젝트에서 lombok을 사용해서 dto를 만들고 있었는데

안드로이드 스튜디오에서 record로 바꾸지 않겠냐는 경고가 나타났습니다.

 

record는 불변 데이터 모델을 간결하게 정의하기 위해 Java에서 추가된 문법입니다.

Java 14에서 처음 소개 되었고 Java 16부터 정식 기능으로 추가 되었습니다.

 

record는 VO(value Object)를 표현하는 새로운 클래스 타입입니다.

기존 자바에서는 데이터를 담기 위한 클래스를 만들기 위해 많은 보일러 플레이트 코드가 필요했습니다.

그래서 Lombok을 사용하기도 했죠

public class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 

@Data
public class Person {
    private String name;
    private int age;
}

 

하지만 record는 무려 롬복 같은 라이브러리 없이 기본으로

생성자, getter, equals, hashCode, toString을 자동으로 만들어줍니다.

setter가 없는 이유는 위에서 말했듯이 불변 데이터 모델이기 때문에 final을 강제합니다.

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

 

네 상당히 간략해졌죠 코틀린의 data class 같은 느낌입니다.

 

record는 getName, getAge 대신 필드명과 동일한 메서드를 생성합니다 → name(), age()

 

데이터 변경이 불가능한 점이 아쉽긴 하지만 Java도 계속 발전하고 있는걸 느낄 수 있어서 좋았습니다

'Java' 카테고리의 다른 글

[Java] Garbage Collection(GC, 가비지 컬렉션)  (0) 2022.12.11
자바 String 문자열 함수 정리  (0) 2022.06.29