반응형
Record Class란?
Java 14에서 Record 클래스가 도입되었다.
Record는 Java에서 불변(immutable) 데이터 클래스를 간단하게 만들기 위한 새로운 클래스 유형안데, 객체를 정의할 때 필요한 반복적인 코드 (예: 생성자, getter, equals(), hashCode(), toString() 메서드 등)를 자동으로 생성줘서 간단하게 사용가능하다.
클래스 이름 앞에 record 키워드를 붙이기만 하면 된다.
public record Person(String name, int age) {}
name과 age라는 두개의 속성을 갖는 불변 객체이며, Java compiler 는 record 선언 시 아래 항목들을 생성한다.
기본 생성자가 자동으로 생성되지 X. Record는 모든 필드를 생성자의 매개변수로 요구하므로, 기본 생성자는 제공하지 않는다.
Field
- private
- final
- public constructor
Method
- getter
- toString
- equals
- hashCode
장점
- 간단하고 직관적인 문법 & 자동 생성되는 메서드
Record는 불변 객체를 쉽게 만들 수 있는 문법을 제공! 기존에는 getter, setter, toString(), equals(), hashCode() 등을 수동으로 작성해야 했지만, Record는 이를 자동으로 생성해 주기 때문에 코드가 간결해짐 - 불변 객체 (Immutable Object)
객체를 생성한 후 필드 값을 변경할 수 없기 때문에 데이터의 무결성을 보장. 모든 필드는 final.
단점
- 불변 객체만 지원
- 상속 불가능 : 이미 Record 클래스를 상속받고 있기 때문에 상속 불가능.
final class com/test/Person extends java/lang/Record {
- 인터페이스 구현 제한
인터페이스는 구현 클래스에 구현 메서드를 추가할 수 있기 때문에, Record의 불변성을 해칠 수 있음.
예를 들어, Record에서 구현한 인터페이스의 메서드가 객체 상태를 변경하는 메서드를 포함하면 Record의 불변성이 깨질 수 있음
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
[JAVA] Jackson 직렬화, 역직렬화 (0) | 2025.02.03 |
---|---|
[JAVA] 직렬화(Serialized), 역직렬화(Deserialization) (0) | 2025.02.03 |
[JAVA] 접근제한자가 private인 메소드를 호출하는 방법 (1) | 2022.10.13 |
[JAVA] 배치(bat), 쉘(sh) 실행하기 (1) | 2022.05.18 |
[JAVA] KeyStore에 Root 인증서 등록하기(SSLHandshakeException, PKIXException) (1) | 2022.05.18 |
댓글