반응형
속성은 초기화되거나 추상이어야합니다.
어리석은 질문 이겠지만, 저는 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
반응형
'IT박스' 카테고리의 다른 글
Jersey 2.0을 사용한 종속성 주입 (0) | 2020.08.18 |
---|---|
Conda와 Anaconda의 차이점은 무엇입니까 (0) | 2020.08.18 |
Groovy의 목록에서지도를 만드는 단축키? (0) | 2020.08.18 |
인터페이스에서 보호 (0) | 2020.08.18 |
Jackson과 함께 사용자 지정 Serializer를 어떻게 사용합니까? (0) | 2020.08.18 |