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 |