데이터 클래스는 주로 데이터를 보유하는 데 사용된다.
각 데이터 클래스에 대해 컴파일러는 인스턴스를 읽을 수 있는 출력으로 인쇄하고, 인스턴스를 비교하고, 인스턴스를 복사하는 등의 작업을 수행할 수 있는 추가 멤버 함수를 자동으로 생성한다.
컴파일러는 기본 생성자에서 선언된 모든 프로퍼티에서 다음 멤버를 자동으로 파생한다.
equals()
/hashCode()
toString()
componentN()
copy()
컴파일러는 자동으로 생성된 함수에 대해 기본 생성자 내부에 정의된 프로퍼티만 사용한다.
생성된 구현에서 프로퍼티를 제외하려면 클래스 본문 안에 프로퍼티를 선언해야 한다.
생성된 코드의 일관성과 의미 있는 동작을 보장하기 위해 데이터 클래스는 다음 요구 사항을 충족해야 한다.
- 기본 생성자에는 매개변수가 하나 이상 있어야 한다.
- 모든 기본 생성자 매개변수는 val 또는 var로 표시되어야 한다.
- 데이터 클래스는 추상, 개방, 밀봉 또는 내부가 될 수 없다.
데이터 클래스 멤버의 생성은 멤버의 상속과 관련하여 이러한 규칙을 따른다.
- 데이터 클래스 본문 또는 수퍼클래스의 최종 구현에
equals()
,hashCode()
또는toString()
의 명시적 구현이 있는 경우 이러한 함수는 생성되지 않고 기존 구현이 사용된다. - 수퍼타입에 개방형이고 호환 가능한 유형을 반환하는
componentN()
함수가 있는 경우, 데이터 클래스에 대해 해당 함수가 생성되어 수퍼타입의 함수를 재정의한다. componentN()
및copy()
함수에 대한 명시적 구현을 제공하는 것은 허용되지 않는다.
'자바' 카테고리의 다른 글
성능 대 확장성 (0) | 2025.03.11 |
---|---|
세마포어 (0) | 2025.03.06 |
Thread Pool 정리 (1) | 2025.01.01 |
스트림 메서드 정리 (0) | 2024.12.19 |
모던 자바 인 액션을 다시 읽으며 든 스트림에 대한 생각 정리 (0) | 2024.12.18 |