[Java] Record가 무엇인가요?
개념
Java 자바 16에서 새로 도입된 기능으로 간단한 데이터 저장용 클래스를 정의하는데 더 간결하고 가독성 있게 작성할 수 있다. 데이터 클래스를 다룰 때 자주 사용되는 생성자, equals(), hashCode(), 그리고 toString() 메서드를 자동으로 생성하는 기능을 제공합니다. 이를 통해 간단하고 안전한 방식으로 데이터를 관리하고 처리할 수 있도록 돕는다. 이러한 특징들은 코드의 가독성을 높이고 버그를 줄이는 데 도움을 준다.
사용방법
public record Gundam(String name, String pilot, String series) {}record 특징
record는 불변 객체로 abstract로 선언할 수 없으며 암시적으로 final로 선언 된다. 한 번 값이 정해지면 setter를 통해 값을 변경할 수 없으며 상속을 할 수 없다. 즉, 레코드의 필드는 불변(immutable)한다.
record 내 각 필드(헤더에 나열한 컴포넌트)는 private final로 정의된다. 따라서 명시적으로 접근 제어자를 선언하지 않아도 된다.
다른 클래스를 상속 받을 수 없습니다만, 인터페이스로는 구현이 가능하다. (extends : X, implements : O)
레코드 내부에 멤버 변수(인스턴스 필드)를 선언할 수 없다. 그러나 static 변수는 생성이 가능하다. 이는 헤더에서 정의한 멤버만을 record에서 관리하기 위함이다.
예제
public record Person(String name, int age) {
public static int totalCount; // 정적 멤버 변수 선언은 가능하다
}
public static class Main {
public static void main(String[] args) {
// 레코드를 생성하고 사용하는 예제
Person person = new Person("Alice", 30);
System.out.println(person.name()); // "Alice"
System.out.println(person.age()); // 30
// 패턴 매칭을 사용하여 레코드의 필드 값을 추출
if (person instanceof Person p) {
System.out.println("Name: " + p.name()); //Name: Alice
System.out.println("Age: " + p.age()); // Age: 30
}
}
}Last updated