Annotaatioiden määrittäminen
Luo mukautettuja annotaatioita
Annotaatioiden määrittäminen on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.
Annotaation määrittäminen
Annotaatio määritellään avainsanoilla annotation class. Yksinkertaisin annotaatio ei sisällä tietoja, vaan toimii merkintänä.
annotation class Beta
@Beta
fun newFeature() = "experimental"
fun main() {
println(newFeature())
}Annotaation parametrit
Annotaatiot voivat sisältää tietoja konstruktoriparametrien avulla. Sallitut tyypit ovat rajalliset: primitiivityypit, String, enumeraatiot, muut annotaatiot, KClass ja näiden taulukot.
annotation class ApiVersion(val value: Int)
@ApiVersion(2)
fun endpoint() = "v2"
fun main() {
println(endpoint())
}@Target
@Target rajoittaa, missä annotaatiota saa käyttää. Sille annetaan yksi tai useampi AnnotationTarget-arvo, kuten CLASS, FUNCTION tai PROPERTY.
@Target(AnnotationTarget.FUNCTION)
annotation class Loggable
@Loggable
fun process() = "processing"
fun main() {
println(process())
}@Retention
@Retention määrittää, kuinka kauan annotaatio säilyy:
SOURCE— kääntäjä hylkää senBINARY— säilytetään luokkatiedostossa, mutta ei näy reflektiolleRUNTIME— säilytetään ja näkyy reflektiolle (oletus)
@Retention(AnnotationRetention.RUNTIME)
annotation class Important
@Important
class Order
fun main() {
println("Important is readable at runtime")
}Useita kohteita
Luettele useita kohteita, jos haluat sallia annotaation käytön useammassa paikassa. Tässä annotaatio toimii sekä luokissa että funktioissa.
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
annotation class Audited
@Audited
class Account {
@Audited
fun withdraw() = "ok"
}
fun main() {
println(Account().withdraw())
}Parametrien oletusarvot
Annotaatioparametreilla voi olla oletusarvoja, joten kutsuja voi jättää ne pois. Näin tavallisimmat tapaukset pysyvät tiiviinä.
annotation class Cache(val seconds: Int = 60)
@Cache
fun cheap() = 1
@Cache(seconds = 300)
fun expensive() = 2
fun main() {
println("" + cheap() + " " + expensive())
}Taulukkoparametrit
Voit käyttää taulukkotyyppejä. Anna arvot annotaation käytössä taulukkoliteraalin syntaksilla [ ... ].
annotation class Roles(val names: Array<String>)
@Roles(["admin", "editor"])
fun restricted() = "secret"
fun main() {
println(restricted())
}@Repeatable
Oletusarvoisesti annotaatio voi esiintyä kussakin elementissä vain kerran. Merkitse se @Repeatable-annotaatiolla, jos haluat käyttää sitä useita kertoja.
@Repeatable
annotation class Tag(val value: String)
@Tag("db")
@Tag("cache")
fun layered() = "ok"
fun main() {
println(layered())
}Sisäkkäiset annotaatioparametrit
Annotaatioparametri voi itse olla toinen annotaatio, jolloin voit rakentaa jäsenneltyä metatietoa.
annotation class Author(val name: String)
annotation class Module(val owner: Author)
@Module(Author("Grace"))
class Payments
fun main() {
println("Nested annotation metadata defined")
}Hyvien annotaatioiden suunnittelu
Hyvin suunniteltu annotaatio:
- On tarkoitukseltaan selkeä ja rajattu
- Määrittää
@Target-rajoituksen, jolloin väärinkäytöstä tulee käännösvirhe - Käyttää
RUNTIME-säilytystä vain, kun reflektio tarvitsee sitä - Tarjoaa järkevät oletusarvot
Määrittelystä käyttöön
Annotaation määrittäminen on vasta puolet kokonaisuudesta. Sellaisenaan se on passiivista metatietoa. Jonkin täytyy lukea se — yleensä reflektio ajonaikana tai annotaatioprosessori käännösaikana. Pian käytät reflektiota.
Pikatarkistus
Testaa, miten hyvin ymmärrät annotaatioiden määrittämisen.
Kertaus
Opit määrittämään annotaatioita:
annotation classparametreineen@Targetsijoittelun rajoittamiseen@Retentionsäilytysajan hallintaan@Repeatableja oletusarvot
Seuraavaksi tutkit tyyppejä reflektion avulla.
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 määrittäminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Annotaatioiden määrittäminen”. 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 määrittäminen”?
Luo mukautettuja annotaatioita 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 2/4.
Kuinka kauan ”Annotaatioiden määrittäminen”-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
- Annotaatioiden käyttö
- Annotaatioiden määrittäminen
- Reflektion perusteet
- Käytännön reflektio