티스토리 뷰
반응형
데이터 클래스
data class Client(val name: String, val postalCode: Int)
코틀린에서는 클래스 앞에 data 키워드를 붙이면 toString, equals, hashCode를 자동으로 생성해준다. equals와 hashCode는 주생성자의 프로퍼티들을 사용한다. 물론 자기가 직접 toString, equals, hashCode 메서드를 직접 작성할 수 있고, 이 경우에는 컴파일러가 생성해 주지 않고 직접 작성한 것을 사용한다.
데이터 클래스는 abstract, open, sealed, inner 클래스가 될 수 없다.
위 코드에서 프로퍼티들은 val을 사용했지만, var을 사용해서 생성할 수도 있다. 하지만 데이터 클래스는 모든 프로퍼티가 읽기 전용인 불변 클래스로 만드는 것이 권장된다. 데이터 클래스가 맵의 키로 사용되는 경우에 예상치 못한 결과가 발생할 수 있기 때문이다. 그리고 불변 객체를 사용하면 프로그램의 실행을 더 쉽게 예상할 수 있다. 멀티 스레드의 데이터 동기화 문제도 불변 객체를 통해서 해결할 수 있다.
copy() 메서드
데이터 클래스를 컴파일 하면 copy 메서드가 제공된다. copy 메서드는 객체를 객체를 복사하고 일부 프로퍼티를 변경할 수 있게 도와준다.
fun main() {
val client = Client("myName", 1)
println(client) // Client(name=myName, postalCode=1)
println(client.copy(postalCode = 2)) // Client(name=myName, postalCode=2)
}
위 코드는 copy 메서드를 사용한 코드이다.
참고
- Kotlin IN ACTION
- https://kotlinlang.org/docs/data-classes.html#copying
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코틀린
- Squash and merge
- DGS Framework
- 2차 인터뷰
- pm.test
- 1차 인터뷰
- string
- 주생성자
- postman
- graphql
- Kotlin In Action
- downTo
- 코딩테스트
- Basic Type
- postman collection
- go 특징
- 네이버 2022 공채
- hashcode
- Python
- python3
- solidity
- git
- postman tests
- 확장 함수
- mysql
- pm.expect
- java
- github
- Kotlin
- squash merge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함