Özellik delegatlarının özelliği nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'deki özellik delegeleri, bir özelliğin değerinin alınması ve ayarlanmasıyla ilgili mantığı, delegat adlı yardımcı bir sınıfa aktarmayı sağlar.
Özellikler:
-
getValuevesetValue'nun Anlaşılması: Okunabilir özellikler (val) için delegatgetValuemetoduna sahip olmalıdır. Okunabilir ve yazılabilir özellikler (var) için ise hemgetValuehem desetValuemetodlarına sahip olmalıdır. Bu metodlar şu parametreleri alır:- Özelliği içeren nesneye referans (sınıf üyeleri için).
- Bir
KPropertynesnesi şeklinde özellik meta verileri.
-
Standart delegatlar: Kotlin, çeşitli standart delegatlarla birlikte gelir:
lazy: Özelliğin tembel başlatılması için.observable: Özellik değeri değiştiğinde belirli bir işlemi gerçekleştirmek için.vetoable: Özellik değeri değiştiğinde belirli bir işlemi gerçekleştirmek ve değişikliği iptal etme imkanı sağlar.- Map'ler için delegatlar: Özellik bir
Map'te saklanabilir.
-
İstediğiniz delegatlar: Kendi delegat sınıflarınızı oluşturabilirsiniz. Sınıf,
ReadOnlyProperty(valiçin) veyaReadWriteProperty(variçin) arayüzlerini uygulamalıdır.
lazy kullanım örneği:
// Alan ilk erişimde başlatılır
val lazyValue: String by lazy {
println("Değeri hesaplıyorum")
"Hello"
}
observable kullanım örneği:
import kotlin.properties.Delegates
var name: String by Delegates.observable("<isim yok>") {
property, eskiDeger, yeniDeger ->
println("$eskiDeger -> $yeniDeger")
}
Özel delegat örneği:
import kotlin.reflect.KProperty
class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, özellik '${property.name}' değeri"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$thisRef, '${property.name}' özelliğinin değeri '$value' olarak değiştirildi")
}
}
class Example {
var p: String by Delegate()
}