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이 아닌 멤버 변수 선언 불가