Kotlin Academy · Oppitunti

Annotaatioiden käyttö

Lisää annotaatioita koodiin

Oppitunti 1/413 vaihetta

Annotaatioiden käyttö on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mitä annotaatiot ovat?

Annotaatiot liittävät koodiin metatietoa. Ne eivät yksinään muuta toimintaa, mutta työkalut, kääntäjät ja kirjastot lukevat niitä tehdäkseen päätöksiä.

Annotaatio kirjoitetaan merkillä @, jota seuraa sen nimi, ja se sijoitetaan heti sen elementin eteen, johon se kohdistuu.

Ensimmäinen annotaatio

Standardikirjastossa on useita hyödyllisiä annotaatioita. @Deprecated merkitsee koodin sellaiseksi, ettei sitä pitäisi enää käyttää, ja näyttää varoituksen kutsukohdassa.

@Deprecated("Use newGreet() instead")
fun greet() = "Hi"

fun newGreet() = "Hello"

fun main() {
    println(newGreet())
}

Argumentteja käyttävät annotaatiot

Annotaatiot voivat ottaa argumentteja, jotka kirjoitetaan konstruktoriparametrien tapaan. @Deprecated hyväksyy viestin ja valinnaisen ReplaceWith-ohjeen.

@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))
}

Varoitusten vaimentaminen

@Suppress käskee kääntäjää vaimentamaan tiettyjä varoituksia annotaation kohteena olevassa elementissä. Välittäkää varoitusten nimet merkkijonoina.

@Suppress("UNUSED_VARIABLE")
fun main() {
    val unused = 42
    println("Runs without the unused-variable warning")
}

JvmStatic ja kumppanit

Jotkin annotaatiot vaikuttavat siihen, miten Kotlin käännetään JVM:lle. @JvmStatic, @JvmField ja @JvmName ohjaavat tavukoodia, jotta Java-kutsujat näkevät helppokäyttöisemmät API:t.

Puhtaassa Kotlin-koodissa nämä eivät tee mitään, mutta yhteentoimivuudessa niillä on merkitystä.

class Math {
    companion object {
        @JvmStatic
        fun square(x: Int) = x * x
    }
}

fun main() {
    println(Math.square(5))
}

Annotaatioiden use-site-targetit

Ominaisuus voi tuottaa JVM:lle useita elementtejä: kentän, getterin, setterin ja konstruktoriparametrit. Use-site-targetit ilmaisevat, mihin annotaatio sijoitetaan.

Syntaksi: @get:, @set:, @field:, @param:.

class User(@get:JvmName("fetchName") val name: String)

fun main() {
    val u = User("Ada")
    println(u.name)
}

Throws Java-yhteentoimivuudessa

Kotlinissa ei ole tarkistettuja poikkeuksia, joten Java-kutsujat eivät koskaan näe throws-lausekkeita, ellet lisää @Throws-annotaatiota. Se tallentaa poikkeustyypin tavukoodin allekirjoitukseen.

import java.io.IOException

@Throws(IOException::class)
fun readData(): String {
    return "data"
}

fun main() {
    println(readData())
}

Useita annotaatioita

Voit käyttää yhdessä elementissä useita annotaatioita. Jokainen kirjoitetaan omalle rivilleen tai erotetaan välilyönneillä. Järjestyksellä ei ole merkitystä.

@Deprecated("old")
@Suppress("DEPRECATION")
fun legacy() = "still here"

fun main() {
    println(legacy())
}

Annotaatiot lausekkeissa

Annotaatioita voi käyttää myös lausekkeissa ja paikallisissa määrityksissä, ei vain ylätason funktioissa tai luokissa. Tämä on tavallista käytettäessä @Suppress-annotaatiota funktion rungossa.

fun main() {
    @Suppress("UNUSED_VARIABLE")
    val temp = computeOnce()
    println("Done")
}

fun computeOnce() = 99

OptIn ja kokeelliset API:t

Kirjastot merkitsevät epävakaat API:t mukautetuilla opt-in-annotaatioilla. Niiden käyttö edellyttää riskin hyväksymistä komennolla @OptIn(SomeApi::class) tai annotaation välittämistä eteenpäin.

Näin kokeelliset ominaisuudet ovat tietoisia valintoja eivätkä vahingossa käyttöön päätyviä toimintoja.

fun main() {
    // @OptIn would appear here when calling an experimental function
    println("Opt-in keeps unstable APIs visible")
}

Miksi annotaatioita käytetään?

Annotaatioiden avulla voit välittää tarkoituksen työkaluille: kääntäjät varoittavat vanhentuneista kutsuista, serialisointikirjastot yhdistävät kentät ja avaimet, testikehykset löytävät testifunktiot ja riippuvuuksien injektiokehykset kytkevät riippuvuudet.

  • Metatietoa, ei logiikkaa
  • Luetaan käännösaikana tai ajonaikana
  • Asetukset pysyvät lähellä koodia

Pikatarkistus

Testaa, miten hyvin ymmärrät annotaatioiden käytön.

Kertaus

Opit käyttämään sisäänrakennettuja annotaatioita:

  • @Deprecated, @Suppress, @Throws
  • JVM-yhteentoimivuus: @JvmStatic, @JvmName
  • Käyttökohteet, kuten @get: ja @field:
  • Opt-in kokeellisia API:ita varten

Seuraavaksi määrittelet omia annotaatioita.

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Annotaatioiden käyttö” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Annotaatioiden käyttö”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Annotaatioiden käyttö”?

Lisää annotaatioita koodiin Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Annotaatioiden käyttö”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Academy-oppitunnilla?

Kyllä. Jokainen Kotlin Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Annotaatioiden käyttö
  2. Annotaatioiden määrittäminen
  3. Reflektion perusteet
  4. Käytännön reflektio
← Takaisin: Kotlin Academy