IT박스

속성은 초기화되거나 추상이어야합니다.

itboxs 2020. 8. 18. 07:29
반응형

속성은 초기화되거나 추상이어야합니다.


어리석은 질문 이겠지만, 저는 Kotlin을 처음 접했고 해결책을 찾지 못했습니다.

클래스 필드를 선언하는 방법은 무엇입니까? 자바에서 가질 수있는 것처럼 :

protected SharedPreferences mSharedPreferences;

그리고 나중에 onCreate():

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

이제 원하는 곳 어디에서나 사용할 수 있습니다 (이 기본 활동의 하위 클래스에서).

Kotlin에서도 동일하게 시도합니다.

protected var sharedPreferences : SharedPreferences

그리고 onCreate():

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

하지만 경고가 표시됩니다. "속성은 초기화되거나 추상이어야합니다."


생성자 외부에서 속성을 초기화하려는 경우 나중에 초기화 된 속성을 찾을 수 있습니다. lateinit수정자를 사용 하여 속성을 선언하면 필요한 초기화 프로그램을 건너 뛸 수 있으며 의미있는 값이 할당 될 때까지 예외와 함께 속성 액세스가 실패하게됩니다.

protected lateinit var sharedPreferences: SharedPreferences

가시성에 대한 Alexander Udalov의 답변에서 이것을 꺼내십시오. nullable 속성의 경우 :

protected var sharedPreferences : SharedPreferences? = null

... 나중에 값을 할당합니다.

참고 URL : https://stackoverflow.com/questions/33849811/property-must-be-initialized-or-be-abstract

반응형