record
2023. 6. 4. 20:09ㆍJava
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와 같은 데이터 중심의 객체를 정의할 때 유용하게 사용될 수 있습니다.
'Java' 카테고리의 다른 글
Callable & ExecutorService (0) | 2023.06.23 |
---|---|
Cloneable 인터페이스(06/12) (0) | 2023.06.06 |
Stream.reduce (0) | 2023.06.06 |
native 키워드 (0) | 2023.06.06 |
Lesson: Classes and Objects 4 (0) | 2023.06.04 |