https://sundaland.tistory.com/133
[ ▶ record ]
Java에서 record는 Java 14에서 미리보기 기능으로 도입되었고, Java 16에서 정식으로 추가된 기능이다. record는 불변(immutable) 데이터 클래스의 간단한 구현을 제공하는 새로운 타입이다. 주로 데이터 전송 객체(DTO)나 값을 캡슐화하는 데 사용된다.
[ ▷ record의 특징 ]
- 불변성: record로 정의된 클래스의 필드는 기본적으로 final로 선언되어, 객체 생성 후 수정할 수 없다.
- 간단한 문법: record는 생성자, getter, equals(), hashCode(), toString() 메서드를 자동으로 생성한다. 이를 통해 보일러플레이트 코드를 줄이고 코드의 가독성을 높인다.
- 자동 생성되는 메서드: record는 생성할 때 전달된 필드를 기반으로 다음과 같은 메서드를 자동으로 생성합니다.
- public String firstname() 및 public String lastname() 같은 접근자 메서드.
- public boolean equals(Object obj) 및 public int hashCode().
- public String toString() 메서드가 자동으로 생성됩니다.
[ ▷ 예시 ]
▼ NamesOnlyDTO를 정의한 예시
public record NamesOnlyDTO(String firstname, String lastname) {}
이 코드로 인해 Java는 다음과 같은 메서드를 자동으로 생성한다.
▼ 생성자
public NamesOnlyDTO(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
▼ 접근자 메서드
public String firstname() {
return this.firstname;
}
public String lastname() {
return this.lastname;
}
▼ equals() 및 hashCode():
@Override
public boolean equals(Object o) {
// ...
}
@Override
public int hashCode() {
// ...
}
▼ toString()
@Override
public String toString() {
return "NamesOnlyDTO[firstname=" + firstname + ", lastname=" + lastname + "]";
}
[ ▷ 사용 예시 ]
record를 사용하면 다음과 같이 쉽게 객체를 생성하고 사용할 수 있다.
NamesOnlyDTO person = new NamesOnlyDTO("John", "Doe");
System.out.println(person.firstname()); // "John"
System.out.println(person.lastname()); // "Doe"
System.out.println(person); // "NamesOnlyDTO[firstname=John, lastname=Doe]"
record는 Java에서 간단하고 명확하게 데이터를 표현할 수 있는 강력한 방법을 제공하며, 불변성을 통해 더 안전한 코드를 작성할 수 있도록 도와준니다. DTO와 같은 데이터 중심의 객체를 정의할 때 유용하게 사용될 수 있다.
'자바' 카테고리의 다른 글
execute()와 스레드 풀 그리고 히카리 CP (1) | 2024.12.13 |
---|---|
Aggregate Root (0) | 2024.10.25 |
Stream.reduce (0) | 2024.10.24 |