Kotlin Academy · Lektion

Skapa och målinrikta egna annotationer

Definiera annotationer med retention-policyer och tillämpa dem på klasser, funktioner och egenskaper.

Lektion 2 av 413 steg

Skapa och målinrikta egna annotationer är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Varför anpassade annoteringar?

Annoteringar är metadata som kopplas till deklarationer (klasser, funktioner, egenskaper och parametrar). Med anpassade annoteringar kan du märka kod för bearbetning av ramverk, byggverktyg (KSP/KAPT) eller din egen logik under körning.

Deklarera en annotering

Använd nyckelordet annotation class. Annoteringsklasser kan ha konstruktorparametrar (endast primitiva typer, String, KClass, enumtyper, andra annoteringar eller matriser av dessa):

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

Metaannoteringar: @Target

@Target begränsar var annoteringen får användas. Vanliga mål är CLASS, FUNCTION, PROPERTY, FIELD, VALUE_PARAMETER och CONSTRUCTOR.

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

@Retention: När är annoteringen tillgänglig?

@Retention styr annoteringens livslängd:

  • SOURCE – tas bort efter kompileringen
  • BINARY – lagras i .class-filen men är inte synlig via reflection
  • RUNTIME – lagras och är synlig under körning (standard för de flesta användningsområden)
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.PROPERTY)
annotation class Validate(val minLength: Int = 1)

@Repeatable: Tillämpa samma annotering flera gånger

Som standard kan en annotering bara tillämpas en gång per deklaration. Märk den med @Repeatable för att tillåta flera tillämpningar:

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

Annotera konstruktorer och parametrar

Du kan annotera konstruktorparametrar och egenskaper i primärkonstruktorn. Använd use-site-targets som @field:, @get: eller @param: för att styra vilket element som tar emot annoteringen:

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

Use-site-targets

Kotlin genererar flera bytekodselement från en enda egenskap (fält, getter, setter och parameter). Use-site-targets anger vilket av dem som får annoteringen:

  • @field: det underliggande fältet
  • @get: getter-funktionen
  • @set: setter-funktionen
  • @param: konstruktorparametern

Annotera klasser

Annoteringar på en klass är användbara för att märka den för ramverksbearbetning (till exempel för att märka en klass som serialiserbar, injicerbar eller som en del av en viss modul):

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

@Repository
class UserRepository

@MustBeDocumented

Om du lägger till @MustBeDocumented visas annoteringen i den genererade API-dokumentationen. Använd det för annoteringar som utgör en del av ditt offentliga API-kontrakt.

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

Annoteringsparametrar: standardvärden och matriser

Parametrar kan ha standardvärden och kan ta emot matriser med nyckelordet vararg eller explicita matristyper:

annotation class Roles(vararg val value: String)

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

KClass-parametrar i annoteringar

Annoteringar kan referera till klasstyper via KClass:

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

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

Snabbkontroll

Vilket värde för @Retention gör en anpassad annotering tillgänglig via Kotlin reflection under körning?

Sammanfattning: Anpassade annoteringar

Viktiga slutsatser:

  • Deklarera med annotation class; parametrarna är begränsade till primitiva typer, String, KClass, enumtyper och matriser
  • @Target – var annoteringen får användas
  • @Retention – när den är tillgänglig (använd RUNTIME för reflection)
  • @Repeatable – tillåt flera tillämpningar på samma deklaration
  • Use-site-targets (@field:, @get: med flera) styr vilket bytekodselement som tar emot annoteringen
Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
51
Lektioner
203

Vanliga frågor

Är lektionen ”Skapa och målinrikta egna annotationer” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Skapa och målinrikta egna annotationer”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Skapa och målinrikta egna annotationer”?

Definiera annotationer med retention-policyer och tillämpa dem på klasser, funktioner och egenskaper. Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?

Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Skapa och målinrikta egna annotationer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?

Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Kotlin Reflection: KClass, KFunction, KProperty
  2. Skapa och målinrikta egna annotationer
  3. Läs annotationer under körning
  4. Reflection-baserad validering och mappning
← Tillbaka till Kotlin Academy