Junior
Kotlinдеги 'lateinit' мүчөсү кандай иштээрин түшүндүрүңүз.
sobes.tech AI
AIден жооп
lateinit колдонулат, болочокто, биринчи кирүү алдында, нөл эмес өзгөчөлүктөрдү жарыялоо үчүн.
- Бул өзгөрмө өзгөчөлүктөргө (
var) гана колдонулат. - Ал негизги маалымат түрлөрү менен (
Int,Boolean,Float) колдонулбайт, анткени аларnullболбойт. - Компилятор өзгөчөлүктүн жарыяланганда дароо башталуусун талап кылбайт.
- Эгер өзгөчөлүк башталгандан мурун колдонулса,
UninitializedPropertyAccessExceptionисключени чыгат.
Мисал:
class MyClass {
lateinit var myProperty: String // Өзгөчөлүк кийинчерээк башталат
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Инициализациядан кийин коопсуз
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Бул жерде `UninitializedPropertyAccessException` чыгат
obj.initializeProperty("Hello")
obj.useProperty() // "Hello" чыгарат
// Башталганын текшерүү
if (obj::myProperty.isInitialized) {
println("Өзгөчөлүк башталды")
}
}
lateinit өзгөчөлүгү башталдыбы-болбогондугун рефлексия аркылуу текшерсе болот: ::propertyName.isInitialized.
lateinit колдонуу көбүнчө фреймворктөрдө кездешет, анда өзгөчөлүктөр (dependency injection) объект түзүлгөндөн кийин инжекттелет (мисалы, Androidда UI элементтери же көзкарандычтык инъекциясы).