JAVA

[JAVA] Recode

요료료룡 2024. 4. 18. 15:34

- recode란?
  - 불변(immutable) 객체를 쉽게 생성할 수 있도록 하는 유형의 클래스
  - JDK14에서 preview로 동작하여 JDK16에서 정식 스펙으로 포함되었음.

recode 특징
1. equals와 hashcode, toString도 기본제공 (보일러 플레이트 코드)
2. final필드

recode를 사용하기 전 class를 사용했었는데,
Student를 불변 객체를 생성하면 다음과 같이 생성했었다.

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;
	}
}


1. 모든 필드에 final 선언
2. 필드 값을 모두 포함한 생성자
3. 접근자 메서드(getter)
4. 클래스의 상속을 제한하려면 클래스 레벨에도 final 선언

아지만 recode를 사용하면,

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


이렇게만 작성하여도 자동으로 생성된다.

위 내용으로 recode장단점을 확인해 보자면, 

장점 : 필드 값 변질의 우려 없음, 대부분의 보일러 플레이트 코드가 사라짐
단점 : 필드 값 수정 불가, 상속 불가(final 클래스), abstract 선언 불가(final 클래스), static이 아닌 멤버 변수 선언 불가