728x90
반응형
java.lang.ExceptionInInitializerError는 정적 변수를 외부에서 초기화 하려고 하였을 때 나타나는 에러이다.
object MyObject {
lateinit var hello: Int
}
Class MyClass {
override onCreate(savedInstanceState: Bundle?){
super.onCreate(saveInstanceState)
MyObject.hello = 1
}
}
위와 같은 코드에서 정적 object안의 변수를 lateinit으로 느린 초기화를 했을 때 나타나는 문제이다.
자바에서는 클래스 안의 정적 변수는 내부의 정적 함수에서만 접근할 수 있는데 이와 같은 성격을 갖고 있는 것 같다.
정적 오브젝트 안의 변수는 내부의 정적 함수 등에서만 초기화 할 수 있는 것 같다.
이를 해결하기 위해선 정적 오브젝트를 클래스로 변환하여 쓰거나 내부에 setter를 만들어서 사용하는 방법이 있다.
728x90
반응형