Använda annotationer
Annotera kod
Använda annotationer är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 1 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.
Vad är annoteringar
Annoteringar fäster metadata vid kod. De ändrar inte beteendet på egen hand, men verktyg, kompilatorer och bibliotek läser dem för att fatta beslut.
Ni skriver en annotering med @ följt av dess namn, placerad precis före elementet som den gäller.
En första annotering
Standardbiblioteket innehåller flera användbara annoteringar. @Deprecated markerar kod som inte längre bör användas och visar en varning vid anropsstället.
@Deprecated("Use newGreet() instead")
fun greet() = "Hi"
fun newGreet() = "Hello"
fun main() {
println(newGreet())
}Annoteringar med argument
Annoteringar kan ta argument, skrivna som konstruktorparametrar. @Deprecated accepterar ett meddelande och valfritt en ledtråd i form av ReplaceWith.
@Deprecated(
message = "Renamed for clarity",
replaceWith = ReplaceWith("sum(a, b)")
)
fun add(a: Int, b: Int) = a + b
fun sum(a: Int, b: Int) = a + b
fun main() {
println(sum(2, 3))
}Undertrycka varningar
@Suppress instruerar kompilatorn att tysta specifika varningar för det annoterade elementet. Ni anger varningsnamnen som strängar.
@Suppress("UNUSED_VARIABLE")
fun main() {
val unused = 42
println("Runs without the unused-variable warning")
}JvmStatic och relaterade annoteringar
Vissa annoteringar påverkar hur Kotlin kompileras till JVM. @JvmStatic, @JvmField och @JvmName styr bytekoden så att Java-anropare får mer lättanvända API:er.
De gör ingenting i ren Kotlin-kod, men är viktiga för interoperabilitet.
class Math {
companion object {
@JvmStatic
fun square(x: Int) = x * x
}
}
fun main() {
println(Math.square(5))
}Annoteringars användningsmål
En egenskap kan generera flera JVM-element: ett fält, en getter, en setter och konstruktorparametrar. Användningsmål anger var en annotering ska placeras.
Syntax: @get:, @set:, @field:, @param:.
class User(@get:JvmName("fetchName") val name: String)
fun main() {
val u = User("Ada")
println(u.name)
}Throws för Java-interoperabilitet
Kotlin har inga kontrollerade undantag, så Java-anropare ser aldrig throws-satser om du inte lägger till @Throws. Det lagrar undantagstypen i bytekodens signatur.
import java.io.IOException
@Throws(IOException::class)
fun readData(): String {
return "data"
}
fun main() {
println(readData())
}Flera annoteringar
Du kan stapla flera annoteringar på samma element. Varje annotering placeras på en egen rad eller separeras med blanksteg. Ordningen spelar ingen roll.
@Deprecated("old")
@Suppress("DEPRECATION")
fun legacy() = "still here"
fun main() {
println(legacy())
}Annoteringar på uttryck
Annoteringar kan även tillämpas på uttryck och lokala deklarationer, inte bara på funktioner eller klasser på toppnivå. Det är vanligt med @Suppress i en funktionskropp.
fun main() {
@Suppress("UNUSED_VARIABLE")
val temp = computeOnce()
println("Done")
}
fun computeOnce() = 99OptIn och experimentella API:er
Bibliotek markerar instabila API:er med anpassade opt-in-annoteringar. För att använda dem bekräftar du risken med @OptIn(SomeApi::class) eller genom att vidarebefordra annoteringen.
På så sätt förblir experimentella funktioner tydliga i stället för att användas av misstag.
fun main() {
// @OptIn would appear here when calling an experimental function
println("Opt-in keeps unstable APIs visible")
}Varför använda annoteringar
Annoteringar låter dig kommunicera avsikter till verktyg: kompilatorer varnar för anrop till föråldrade funktioner, serialiseringsbibliotek mappar fält, testramverk hittar testmetoder och DI-ramverk kopplar ihop beroenden.
- Metadata, inte logik
- Läses vid kompilering eller körning
- Håller konfigurationen nära koden
Snabbkontroll
Testa din förståelse av hur annoteringar används.
Sammanfattning
Du lärde dig att använda inbyggda annoteringar:
@Deprecated,@Suppress,@Throws- JVM-interoperabilitet:
@JvmStatic,@JvmName - Användningsmål som
@get:och@field: - Opt-in för experimentella API:er
Nästa steg är att definiera egna annoteringar.
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 ”Använda annotationer” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Använda 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 ”Använda annotationer”?
Annotera kod 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 1 av 4.
Hur lång tid tar lektionen ”Använda 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
- Använda annotationer
- Definiera annotationer
- Grunderna i reflection
- Praktisk reflection