본문 바로가기
Back-End (web)

[kotlin] Smart cast to 'Type' is impossible, because 'xxx' is a mutable property that could have been changed by this time.

by 햄과함께 2019. 1. 19.
320x100


data class People(var name: String// name이 변경될 수 있는 
var people: People
val names: MutableList<String> = mutableListOf()
people.name?.let { 
    names.add(people.name) // error
}
cs


변경될 수 있는 var 타입을 다른 변수에 대입하려고 할 때 에러가 발생한다.


Smart cast to 'List' is impossible, 
because 'people.name' is a mutable property that could have been changed by this time.
cs


에러를 읽어보면 people.name이 변경될 수 있는 mutable 프로퍼티 이므로 에러가 난 시점에 값이 변경될 가능성이 있어 에러가 발생했다.

따라서 add 하기 전에 변경 불가능한 val 변수에 먼저 값을 세팅한 뒤 val 변수를 add해준다.


data class People(var name: String// name이 변경될 수 있는 타입
var people: People
val names: MutableList<String> = mutableListOf()
people.name?.let { name -> // val name에 먼저 값 넣고
    names.add(people.name) // val 값을 
}
cs


변경하면 위와 같다.



참고 : [stackoverflow]smart cast to type is impossible because variable is a mutable property

320x100

댓글