record란?
간단히 설명하자면 "데이터 클래스"이며 순수하게 (불변)데이터를 보유하기 위한 특수한 종류의 클래스다. 이를 사용하면 데이터를 객체 간에 전달하는 작업을 간단하게 만들어준다.
- JDK14에서 preview로 등장하여 JDK16에서 정식 기능으로 포함
예시
String 값으로 name, Integer 값으로 age라는 변수를 갖고 있는 User
라는 클래스 구현한다고 가정하자.
일반 클래스로 구현한 User 클래스
public class User { private final String name; private final Integer age; public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public Integer getAge() { return age; } }
record를 사용하여 구현한 User 클래스
public record User (String name, String address) {}
특징
- record 클래스는 final 클래스라 상속할 수 없다.
- 각 멤버 변수는 private final로 정의된다.
- getter가 자동으로 생성된다.
- 각 멤버 변수의 getter는 getXXX()가 아닌, 변수명을 딴 getter가 생성된다.(
User.name()
,User.age()
로 사용)
- 각 멤버 변수의 getter는 getXXX()가 아닌, 변수명을 딴 getter가 생성된다.(
- 모든 멤버변수를 인자로 하는 public 생성자를 자동으로 생성하지만,
기본 생성자는 만들지 않으므로 필요한 경우 직접 구현해야 한다. equals()
,hashcode()
,toString()
을 자동으로 생성한다.
때문에 불필요한 코드들을 쉽게 제거가 가능하다!
참고
'알아두면 좋은 개발 지식 > Java & Spring' 카테고리의 다른 글
Spring에서 동시성 이슈 해결 방법(MySQL, Redis 이용하기) (1) | 2024.09.25 |
---|---|
[Spring] Spring Security '인증' 과정 (1) | 2024.09.13 |
[Spring Boot] Actuator로 서버 모니터링하기 (3) | 2024.09.07 |
[Java] JVM의 Garbage Collector (0) | 2024.04.13 |
일급 컬렉션(First Class Collection)을 사용하는 이유 (0) | 2024.04.13 |