티스토리 뷰

반응형

데이터 클래스

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 메서드를 사용한 코드이다. 

 

 

참고

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함