0Pricing
Kotlin Academy · Lektion

Benutzerdefinierte Annotationen erstellen und anwenden

Definieren Sie Annotationen mit Retention-Policies und wenden Sie sie auf Klassen, Funktionen und Properties an.

Benutzerdefinierte Annotationen erstellen und anwenden ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum eigene Annotationen?

Annotationen sind Metadaten, die an Deklarationen wie Klassen, Funktionen, Properties und Parameter angehängt werden. Eigene Annotationen ermöglichen es Ihnen, Code für die Verarbeitung durch Frameworks, Build-Tools (KSP/KAPT) oder Ihre eigene Laufzeitlogik zu markieren.

Eine Annotation deklarieren

Verwenden Sie das Schlüsselwort annotation class. Annotation-Klassen können Konstruktorparameter haben – allerdings nur primitive Typen, String, KClass, Enums, andere Annotationen oder Arrays davon:

annotation class Validate(val minLength: Int = 1, val maxLength: Int = 255)

Meta-Annotationen: @Target

@Target schränkt ein, wo die Annotation verwendet werden darf. Häufige Ziele sind: CLASS, FUNCTION, PROPERTY, FIELD, VALUE_PARAMETER, CONSTRUCTOR.

@Target(AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER)
annotation class Validate(val minLength: Int = 1, val maxLength: Int = 255)

@Retention: Wann ist die Annotation verfügbar?

@Retention steuert die Gültigkeitsdauer der Annotation:

  • SOURCE – wird nach der Kompilierung verworfen
  • BINARY – wird in der .class-Datei gespeichert, ist aber über Reflection nicht sichtbar
  • RUNTIME – wird gespeichert und ist zur Laufzeit sichtbar (Standard für die meisten Anwendungsfälle)
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.PROPERTY)
annotation class Validate(val minLength: Int = 1)

@Repeatable: Dieselbe Annotation mehrfach anwenden

Standardmäßig kann eine Annotation nur einmal pro Deklaration angewendet werden. Kennzeichnen Sie sie mit @Repeatable, um mehrere Anwendungen zu ermöglichen:

@Repeatable
@Target(AnnotationTarget.FUNCTION)
annotation class Role(val name: String)

Konstruktoren und Parameter annotieren

Sie können Konstruktorparameter und Properties des Primärkonstruktors annotieren. Verwenden Sie die Use-Site-Targets @field:, @get: oder @param:, um festzulegen, welches Element die Annotation erhält:

data class User(
    @field:Validate(minLength = 2) val name: String,
    @field:Validate(minLength = 0, maxLength = 120) val email: String
)

Use-Site-Targets

Kotlin erzeugt aus einer Property mehrere Bytecode-Elemente – Feld, Getter, Setter und Parameter. Use-Site-Targets legen fest, welches davon die Annotation erhält:

  • @field: das Backing-Feld
  • @get: der Getter
  • @set: der Setter
  • @param: der Konstruktorparameter

Klassen annotieren

Annotationen an einer Klasse sind nützlich, um sie für die Verarbeitung durch ein Framework zu markieren, beispielsweise als serialisierbar, injizierbar oder als Teil eines bestimmten Moduls:

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Repository

@Repository
class UserRepository

@MustBeDocumented

Durch das Hinzufügen von @MustBeDocumented wird sichergestellt, dass die Annotation in der generierten API-Dokumentation erscheint. Verwenden Sie dies für Annotationen, die Teil Ihres öffentlichen API-Vertrags sind.

@MustBeDocumented
@Target(AnnotationTarget.CLASS)
annotation class PublicApi(val since: String)

Annotation-Parameter: Standardwerte und Arrays

Parameter können Standardwerte haben und Arrays über das Schlüsselwort vararg oder explizite Array-Typen akzeptieren:

annotation class Roles(vararg val value: String)

@Roles("ADMIN", "EDITOR")
class AdminPanel

KClass-Parameter in Annotationen

Annotationen können über KClass auf Klassentypen verweisen:

annotation class Serializer(val using: KClass<out Any>)

@Serializer(using = GsonAdapter::class)
class Event

Schnelltest

Welcher Wert von @Retention macht eine eigene Annotation zur Laufzeit über Kotlin-Reflection zugänglich?

Zusammenfassung: Eigene Annotationen

Wichtige Erkenntnisse:

  • Mit annotation class deklarieren; Parameter sind auf primitive Typen, String, KClass, Enums und Arrays beschränkt
  • @Target – legt fest, wo die Annotation angewendet werden kann
  • @Retention – legt fest, wann sie verfügbar ist (für Reflection RUNTIME verwenden)
  • @Repeatable – ermöglicht mehrere Anwendungen an einer Deklaration
  • Use-Site-Targets wie @field: und @get: legen fest, welches Bytecode-Element die Annotation erhält

Häufig gestellte Fragen

Ist die Lektion „Benutzerdefinierte Annotationen erstellen und anwenden“ kostenlos?

Ja — der vollständige Text von „Benutzerdefinierte Annotationen erstellen und anwenden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Benutzerdefinierte Annotationen erstellen und anwenden“?

Definieren Sie Annotationen mit Retention-Policies und wenden Sie sie auf Klassen, Funktionen und Properties an. Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Benutzerdefinierte Annotationen erstellen und anwenden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Kotlin Reflection: KClass, KFunction, KProperty
  2. Benutzerdefinierte Annotationen erstellen und anwenden
  3. Annotationen zur Laufzeit auslesen
  4. Reflection-basierte Validierung und Zuordnung
← Zurück zu Kotlin Academy