Sobes.tech
Middle

Kotlin'de 'lazy' ve 'lateinit' nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

lazy - değiştirilemez (val) özelliklerin tembel başlatma için özellik delegesi. Değer, ilk erişimde hesaplanır ve ardından önbelleğe alınır.

// Lazy kullanım örneği
val lazyValue: String by lazy {
    println("Başlatılıyor") // ilk erişimde sadece bir kez gösterilir
    "Merhaba, lazy!"
}

lateinit - değiştirilebilir (var) özellikler için modifikator, ilk erişime kadar başlatmayı ertelemeye olanak tanır. Özellik null olamaz. Başlatmadan önce kullanmak, UninitializedPropertyAccessException hatasına yol açar.

// lateinit kullanım örneği
lateinit var lateinitVariable: String

fun initializeVariable() {
    lateinitVariable = "Merhaba, lateinit!"
}

fun useVariable() {
    // Kullanımdan önce başlatmayı kontrol et (isteğe bağlı, ama önerilir)
    if (::lateinitVariable.isInitialized) {
        println(lateinitVariable)
    } else {
        println("Değişken henüz başlatılmadı")
    }
}

Ana farklar:

Özellik lazy lateinit
Özellik tipi val (sadece okunabilir) var (değiştirilebilir)
Null olma durumu Nullable veya non-nullable olabilir Non-nullable olmalı
Başlatma Otomatik, ilk erişimde Manuel
Erteleme Evet, ilk erişimde hesaplanır Evet, başlatmadan sonra tanımlanır
Çoklu iş parçacığı güvenliği Varsayılan olarak güvenli (senkronizasyon), seçenekler mevcut Garantili değil, bağlama bağlı
Erişim öncesi hata Hayır, otomatik başlatılır UninitializedPropertyAccessException