[JAVA] Java record

chaentopia·2024년 4월 10일
0

NOW SOPT SERVER 과제

목록 보기
6/14

1차 세미나

1차 세미나 마지막 키워드 과제로 Java record에 대해서 알아보도록 하겠습니다.

Record란?

데이터를 보관하기 위해 만든 데이터 객체는 불변하게 만들게 되는데, 이런 불변의 데이터를 전달할 때, 보일러 플레이트 필드와 메소드가 포함된 클래스를 생성해야 하기 때문에 코드가 복잡해진다는 단점이 있었습니다.

Java 14부터 생겨난 record 라는 키워드는 이런 점들을 해결할 수 있습니다.
다시 말해서, 불변 객체를 쉽게 생성할 수 있도록 하는 유형의 클래스입니다.

public class Student {
	private String name;
	private int age;

	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}
}

이렇게 모든 필드값을 포함한 생성자를 만들고 getter를 일일이 써주는 복잡한 코드에서

public record Student(String name, int age) {
}

이렇게 직접 구현하지 않아도 자동으로 생성될 수 있도록 키워드 하나를 붙이며 모든 걸 해결할 수 있습니다.

다만, record는 다른 클래스를 상속받을 수 없으며, private final 이외의 인스턴스 필드를 선언할 수는 없습니다. 선언되는 필드는 static이어야 합니다. 또한, record는 암시적으로 final입니다. abstract일 수 없습니다. record는 API가 상태 설명에 의해서만 정의되며, 다른 클래스나 레코드에 의해 변경될 수 없습니다.

profile
the pale blue dot

0개의 댓글