App/에러

[안드로이드] java.lang.ExceptionInInitializerError

Say simple 2020. 9. 17. 17:54
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
반응형