인프런 커뮤니티 질문&답변

jminie님의 프로필 이미지
jminie

작성한 질문수

냉동코더의 알기 쉬운 Modern Android Development 입문

Data class 기초

Data Class 강의 중 Copy 내용

작성

·

884

·

수정됨

0

강의 복습중입니다! 강의에서 Data Class의 Copy를 얕은 복사라고 설명해주셨는데 깊은 복사 아닌가요...?

data class Person(var name: String, var age: Int) 

fun main() { 
    val person1 = Person("Bob", 22) 
    val person2 = person1.copy(name = "James") 
    println(person1.hashCode()) 
    println(person2.hashCode()) 
}

얕은 복사라면 해당 해시코드가 같아야 정상인데 출력해보니 다른 값이 나와서요!

답변 1

0

냉동코더님의 프로필 이미지
냉동코더
지식공유자

코틀린의 데이터클래스를 copy하면 기본 타입 이외의 변수는 얕은 복사가 되기 때문에 얕은 복사로 분류합니다.

https://stackoverflow.com/questions/47359496/kotlin-data-class-copy-method-not-deep-copying-all-members

좀 더 긴 설명을 원하시면 다음 블로그도 참조해보세요.

https://lengrand.fr/kotlin-data-classes-shallow-copies-and-immutability/

jminie님의 프로필 이미지
jminie
질문자

그럼 대부분의 한글 블로그에서 Copy가 주소값을 복사하는것이 아니라 객체 자체를 복사해서 깊은 복사라고 설명하고 있는 글들은 잘못된 것이군요...!

jminie님의 프로필 이미지
jminie

작성한 질문수

질문하기