레코드(Record)
는 Java 14
에서 등장한 문법입니다.
데이터 전달을 위한 객체인 DTO(Data Transfer Object)
를 작성할 때 보일러 플레이트(Boiler Plate)
를 줄이기 위해서 레코드
를 사용합니다.
보일러 플레이트 코드
는 여러 곳에서 별다른 수정 없이 반복 사용되는 코드를 의미합니다.
다음은 Student라는 객체를 전달하기 위해 만든 DTO 코드의 예시입니다.
public class Student {
private final String name;
private final int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
public String getName() {
return name;
}
public int getGrade() {
return grade;
}
@Override
public String toString() {
return "Student [name=" + name + ", grade=" + grade + "]";
}
}
필드는 getter를 통해 읽기만 가능하도록 private final
로 설정되어 있고 생성자와 읽기를 위한 getter, 객체 정보 출력을 위한 toString()
을 오버라이딩된 내용이 있습니다. 이 내용들은 Student 객체에 있어서 필수한 내용들이라서 반복 사용되면서도 수정될 일이 없죠.
이러한 코드를 레코드
를 사용하면 간단하게 처리할 수 있습니다. 다음 레코드 코드는 위의 Student 코드를 완전히 대체하게 됩니다. 정말 간단하죠?
public record StudentRecord(String name, int grade) { }
public class Main {
public static void main(String[] args) {
StudentRecord student = new StudentRecord("김포도", 2);
System.out.println(student.name());
System.out.println(student.grade());
System.out.println(student.toString());
}
}