197
2019-08-27 19:20:41
0
번데기 앞에서 주름 잡는 것 같기는 하지만..
https://kotlinlang.org/docs/reference/data-classes.html 요기 보시면,
아래와 같이 User 클래스를 선언했을 때..
data class User(var name: String, var age: Int)
1. 본문처럼 써도 되지만, 그냥 positional arguments처럼 쓰셔도 되겠습니다. 그냥 흔한 constructor 쓰는 거니까요.
예) val user = User("나의이름", 20)
2. (꼭 data class를 안 쓰더라도) Kotlin은 변수에 알아서 getter/setter를 만들어 주니,
* println(user.getName()) ==> println(user.name)
* user.setName("수정") ==> user.name = "수정"
로 쓰는 것 이미 알고 계시겠고...
3. 본문의 'val user2 = user.copy(name="수정")'과 같은 copy() 메소드는 위의 문서 본문을 보시면,
새 객체를 만들고 싶은데 지정한 멤버 변수 값은 바꾸고 싶다! 할 때 쓰는 것으로 되어 있습니다.
따라서 멤버 변수가 (val로 선언된) 불변형이라면 copy()가 유용하겠지만,
본문 예시 같은 경우에는 그냥 대입 연산자 쓰시면 될 것 같습니다.
4. Kotlin의 data class는 (그냥 class에도 만들어주는 getter/setter 외에)
equals(), toString(), copy(), componentN() 등 편리하거나 유용한 메소드를 알아서 만들어주는 데 의의가 있는 것 같습니다.