레코드(Record)

✒️ 2025-05-23 20:38 내용 수정


참고 자료 : Geeksforgeeks What are Java Records and How to Use them Alongside Constructors and Methods?, 마스터포포's Java Record Class란?

불변(Immutable) 데이터를 정의할 수 있는 클래스

public record Person(int id, String name) {}
// 레코드로 생성
public recored Person(int id, String name) {}

// 클래스로 생성
public class Person {
	private int id;
	private String name;
}
public class Main {  
	// 레코드 생성
    public record Person(int id, String name) {}  
  
    public static void main(String[] args) {  
        Person person = new Person(123, "Kim");  
        System.out.println("id: " + person.id);  
        System.out.println("id by getter: " + person.id());  
  
        System.out.println("name: " + person.name);  
        System.out.println("name by getter: " + person.name());  
          
        System.out.println(person.toString());  
    }  
}
id: 123
id by getter: 123
name: Kim
name by getter: Kim
Person[id=123, name=Kim]
public final class Employee extends java.lang.Record {
   private final int id;
   private final java.lang.String firstName;
   private final java.lang.String lastName;
   static int empToken;

   public Employee(int id, java.lang.String firstName, java.lang.String lastName) { /* compiled code */ }

   public Employee(int id, java.lang.String firstName) { /* compiled code */ }

   public void getFullName() { /* compiled code */ }

   public static int generateEmployeeToken() { /* compiled code */ }

   public int id() { /* compiled code */ }

   public java.lang.String firstName() { /* compiled code */ }

   public java.lang.String lastName() { /* compiled code */ }

   public java.lang.String toString() { /* compiled code */ }

   public final int hashCode() { /* compiled code */ }

   public final boolean equals(java.lang.Object o) { /* compiled code */ }
}

생성자와 멤버

import java.util.Date;  
  
public class Main {  
	// 레코드 생성
    public record Person(int id, String name, Date date) {  
	    // static 필드 추가
        static Date now = new Date();  

		// 보조 생성자 추가
        public Person(int id, String name) {  
            // 기본 생성자 호출
            this(id, name, now);  
        }  

		// 메서드 추가
        public void greet() {  
            System.out.println("Welcome! [" + now + "]");  
            System.out.println(id + " | " + name);  
        }  
    }  
  
    public static void main(String[] args) {  
        Person person = new Person(123, "Kim");  
        person.greet();  
    }  
}
Welcome! [Fri May 23 20:31:49 KST 2025]
123 | Kim