Record
자바 14 버전부터 record 키워드를 지원합니다. record를 사용하면 Data class를 훨씬 간결하게 작성할 수 있습니다.
파이썬의 dictionary, C#의 Record, 코틀린의 Data class와 유사한 역할을 합니다.
기존 Data class
클래스를 만들 때 생성자를 정의합니다. 그리고, 필드를 캡슐화하고, getter를 정의한 클래스가 있다고 가정합니다.
public class UserDto {
private final int name;
private final int address;
public User(int name, int address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
}
이는 자바의 record를 사용하면, 아래와 같이 구현할 수 있습니다.
public record UserDto(String name, String address) {}
record를 사용하면 아래의 내용들을 직접 구현하지 않아도 자동으로 생성됩니다.
- 필드 캡슐화
- 생성자 메서드
- getters 메서드
- equals 메서드
- hashcode 메서드
- toString 메서드
차이점이 있다면, getter에서 getX()가 아니라, X()를 사용합니다.
User user = new User(dto.name, dto.address);
// System.out.println(user.getName()); X!
System.out.println(user.name()); O!
그리고 필요한 메서드를 추가하거나 재정의도 가능합니다.
public record User(String name, String address) {
// 메서드 정의
}
record를 잘 사용하면, 특정 DTO나 데이터를 담는 그릇을 더 적합하게 만들고 사용할 수 있을 것 같습니다!
감사합니다.
'Language > Java' 카테고리의 다른 글
Java 8 - 함수형 인터페이스를 사용하는 방법! (0) | 2022.03.05 |
---|---|
Java - 참조(reference) 객체가 아닌 값(value) 객체 사용하는 방법 (0) | 2022.03.05 |
Java - Atomic Variable (+ 동시성 제어 비교 with volatile, synchronized) (2) | 2022.02.12 |
Java 8 - 메소드 레퍼런스(Method Reference) : 람다식 간단하게 표현하기! (0) | 2022.02.11 |
Effective Java - Wrapper 클래스 사용 시 주의할 점 (오토 박싱, 오토 언박싱) (0) | 2022.01.14 |