Annotations
- Kotlin kursu
- İleri seviye
- Ders 65/83
- 5 dk
Annotation'ları reflection ile okumayı öğrenirsin.
Annotations ve okuma
Bir annotation, koda meta veri ekler. @Target ile nereye konabileceği belirtilir. Reflection ile annotation'lar okunabilir.
Örnek: @Target(AnnotationTarget.PROPERTY) annotation class Label. Bir özelliğe @Label koyulur. prop.annotations ile annotation listesi alınır; prop.findAnnotation<Label>() ile belirli bir annotation bulunur. Bu kalıp, çalışma zamanında meta veriye dayalı dallanma yapar.
findAnnotation ile arama
findAnnotation<T>(), bir öğe üzerinde belirli bir annotation'ı arar. Bulursa annotation'ı, bulamazsa null döndürür.
Örnek: val label = prop.findAnnotation<Label>(). Eğer prop üzerinde @Label varsa label null değil; yoksa null olur. Bu kalıp, annotation varlığına göre dallanma yapmanın temiz bir yoludur.
Uygulama Label annotation'ını tanımla ve oku
@Target(AnnotationTarget.PROPERTY) annotation class Label tanımla. class Item(@Label val name: String) sınıfı yaz. main içinde val prop = Item::name referansını al ve println(prop.annotations.any { it is Label }) çağrısını ekle.
Başlangıç kodu
// Label annotation: PROPERTY hedefli
// Item sınıfı: name özelliğinde @Label
// main'de prop al, annotations ile Label ara ve yazdırÖrnek çözüm
@Target(AnnotationTarget.PROPERTY)
annotation class Label
class Item(@Label val name: String)
fun main() {
val prop = Item::name
println(prop.annotations.any { it is Label })
}Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 annotation class tanımını tamamla
____ class Label
annotation class Label
Açıklama: annotation class Label bir annotation tanımlar.
2 Annotation parçalarını eşle
| Kavram | Anlamı |
|---|---|
@Target(...) |
Yer belirleme |
annotation class |
Tanım |
@Label |
Kullanım |
findAnnotation<Label>() |
Arama |
3 Bir özellik üzerindeki annotation'ları okumak için hangi özellik kullanılır?
- .methods
- .fields
- .constructors
- .annotations Doğru cevap
Açıklama: annotations annotation listesini verir.