본문 바로가기
개발/Java

[Java] Record 알아보기

by devhooney 2023. 9. 20.
728x90

1. Recode란?

Record는 자바 14에서 도입되었고, 16에서 정식으로 채택된 클래스이다. 데이터를 다루기 위한 데이터 클래스로 사용된다. 자동으로 생성자를 만들어주고, getter, equals, hashCode, toString을 자동으로 생성한다. 필드를 final로 생성해줘서 불변 데이터로 관리할 수 있다.

 

 Record 클래스는 주로 데이터를 보관하고 전달하기 위한 목적으로 사용되며, 레코드 타입(Record Type)이라고도 한다.

 

 

2. 예시

public record ClassName(parameters) {
    // 필드 정의
}
public record Person(String name, int age) {
}
public class RecordExample {
    public static void main(String[] args) {
        // 레코드 객체 생성
        Person person1 = new Person("Alice", 30);
        Person person2 = new Person("Bob", 25);

        // 레코드 객체의 필드에 접근
        System.out.println("Name: " + person1.name()); // "Alice" 출력
        System.out.println("Age: " + person1.age());   // 30 출력

        // 레코드 객체 비교
        System.out.println("Are they equal? " + person1.equals(person2)); // false 출력

        // 레코드 객체 출력
        System.out.println(person1); // "Person[name=Alice, age=30]" 출력
    }
}

 

 

728x90

 

 

 

3. 주요 특징

- 불변성(Immutable): Record 클래스의 인스턴스는 불변하며, 한 번 생성되면 내부 데이터를 수정할 수 없다. 이러한 불변성은 데이터의 안정성과 예측 가능한 동작을 제공한다.

- 자동 생성 메소드: Record 클래스는 자동으로 생성자 메소드, 접근자 메소드(getters), equals(), hashCode(), toString() 메소드를 생성한다. 이를 통해 객체를 생성하고 필드에 접근하는 데 편의성을 제공한다.

- Value 타입: Record 클래스는 값 타입(Value Type)의 개념을 강화하며, 객체의 내용이 동일하면 동등한 것으로 간주된다. 이는 객체 비교에 사용되는 equals()와 hashCode() 메소드에 반영된다.

- 데이터 보관용: Record 클래스는 데이터를 간결하게 보관하고 전달하기 위해 사용되며, 데이터 구조를 정의하는 데 유용하다.

- 명시적인 생성자: Record 클래스는 자동으로 생성자를 가지며, 필드 초기화를 위한 생성자를 명시적으로 정의할 필요가 없다. 생성자의 파라미터는 Record 클래스의 필드와 일치해야 한다.

 

 

 

- 출처

https://www.youtube.com/watch?v=pgiecZ2c6BQ

728x90