Language/Java

Java14 - Record (Data class) 정리

JaeHoney 2022. 2. 12. 16:18

Record

자바 14 버전부터 record 키워드를 지원합니다. record를 사용하면 Data class를 훨씬 간결하게 작성할 수 있습니다.

 

파이썬의 dictionary, C#의 Record, 코틀린의 Data class와 유사한 역할을 합니다.

 

기존 Data class

클래스를 만들 때 생성자를 정의합니다. 그리고, 필드를 캡슐화하고, getter를 정의한 클래스가 있다고 가정합니다.

public class UserDto {

    private final int name;
    private final int address;

    public User(int name, int address) {
        this.name = name;
        this.address = address;
    }
    
    public String getName() {
        return name;
    }
    
    public String getAddress() {
        return address;
    }
}

 

이는 자바의 record를 사용하면, 아래와 같이 구현할 수 있습니다.

public record UserDto(String name, String address) {}

 

record를 사용하면 아래의 내용들을 직접 구현하지 않아도 자동으로 생성됩니다.

  • 필드 캡슐화
  • 생성자 메서드
  • getters 메서드
  • equals 메서드
  • hashcode 메서드
  • toString 메서드

 

차이점이 있다면, getter에서 getX()가 아니라, X()를 사용합니다.

User user = new User(dto.name, dto.address);

// System.out.println(user.getName()); X!
System.out.println(user.name()); O!

 

그리고 필요한 메서드를 추가하거나 재정의도 가능합니다.

public record User(String name, String address) {
    // 메서드 정의
}

 


 

record를 잘 사용하면, 특정 DTO나 데이터를 담는 그릇을 더 적합하게 만들고 사용할 수 있을 것 같습니다!

 

감사합니다.