728x90
반응형
아래와 같은 코드에서,
lateinit var test: String
override fun onCreate(saveInstanceState: Bundle?){
super.onCreate(saveInstanceState)
setTest("안녕하세요!")
System.out.println(test)
}
fun setTest(text: String) {
Handler().postdelayed({
test = text
}, 1000)
}
lateinit은 게으른, 느린 초기화를 의미한다. 느린 초기화란 메모리를 아끼기 위해서 변수가 필요할 때 초기화 하는 것을 의미한다. 하지만 이 변수를 초기화 하지 않고 사용한다면 초기화 에러가 뜬다.
위의 코드를 보면 1000 밀리세컨드가 지나간 다음에 test가 초기화 되는 것을 볼 수 있는데, 테스트가 초기화 되기 전에 System.out.println(test)가 실행되어 에러가 뜨게 된다.
위의 에러를 해결하기 위해선 초기화가 진행된 후 변수를 이용하게 만들어야 한다.
728x90
반응형