Java Academy · Oppitunti

Annotaatioiden määrittäminen: elementit ja oletusarvot

Luo mukautettuja annotaatioita @interface-määrityksellä, määritä elementtejä oletusarvoilla ja käytä meta-annotaatioita.

Oppitunti 1/413 vaihetta

Annotaatioiden määrittäminen: elementit ja oletusarvot on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä annotaatiot ovat

Annotaatiot ovat luokkiin, metodeihin, kenttiin tai parametreihin liitettäviä metatietoja. Ne eivät muuta toimintaa suoraan, vaan tarjoavat tietoa kääntäjille, kehyksille tai suorituksen aikaisille käsittelijöille.

Annotaation määrittäminen @interface-määrityksellä

Käyttäkää @interface-määritystä mukautetun annotaation määrittämiseen. Elementit näyttävät metodeilta. Oletusarvo määritetään default-avainsanalla.

@interface Retry {
    int times()      default 3;
    long delayMs()   default 1000L;
    Class<? extends Throwable>[] on() default {Exception.class};
}

Annotaation käyttäminen

Kohdistakaa annotaatio kohteeseen. Oletusarvon sisältävät elementit voidaan jättää pois. Kun vain yhden elementin nimi on value, sen arvon voi määrittää ilman avaimen nimeä.

@Retry(times = 5, delayMs = 500)
public void callExternalService() { ... }

// Single-element shorthand:
@interface Label { String value(); }
@Label("production")
public class App {}

Annotaation elementtityypit

Elementit voivat olla vain perustyyppejä (int, long jne.), String-tyyppi, Class, enum, toinen annotaatiotyyppi tai jokin edellä mainituista yksiulotteisena taulukkona.

@interface Config {
    String   host();
    int      port()      default 8080;
    LogLevel level()     default LogLevel.INFO;  // enum
    Class<?> handler()   default DefaultHandler.class;
    String[] tags()      default {};
}

Meta-annotaatiot: @Retention

@Retention määrittää, kuinka pitkään annotaatio säilytetään: SOURCE (kääntäjä hylkää sen), CLASS (se sisältyy .class-tiedostoon, mutta ei ole saatavilla suorituksen aikana), RUNTIME (se on luettavissa reflektion avulla).

@Retention(RetentionPolicy.RUNTIME)
@interface Retry {
    int times() default 3;
}

Meta-annotaatiot: @Target

@Target rajoittaa, mihin annotaation voi kohdistaa. Useita kohteita voi luetella.

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Audited {
    String description() default "";
}

@Documented ja @Inherited

@Documented sisällyttää annotaation Javadoc-dokumentaatioon. @Inherited sallii aliluokkien periä annotaation yliluokaltaan (vain luokkatasolla käytettävien annotaatioiden tapauksessa).

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Category {
    String value();
}

@Repeatable-annotaatiot

Merkitkää annotaatio @Repeatable-annotaatiolla, jotta se voi esiintyä samassa elementissä useita kertoja. Antakaa säilöannotaatio, joka sisältää taulukon.

@Repeatable(Tags.class)
@interface Tag { String value(); }
@interface Tags { Tag[] value(); }

@Tag("fast")
@Tag("stable")
public class Service {}

Oletusarvot ja elementtien pois jättäminen

default-arvon sisältäviä elementtejä ei tarvitse määrittää kutsukohdassa. Oletusarvottomat elementit ovat pakollisia.

@Retry                  // uses defaults: times=3, delayMs=1000
public void action1() {}
@Retry(times=1)         // overrides only times; delayMs stays 1000
public void action2() {}

Annotaatio vai merkkirajapinta

Merkkirajapinnat, kuten Serializable, tarkistetaan instanceof-operaatiolla, ja ne välittävät tyyppitietoa. Annotaatiot ovat joustavampia: ne sisältävät metatietoja ja voivat sisältää elementtejä.

Yleiset sisäänrakennetut annotaatiot

Tuntekaa JDK:n annotaatiot: @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings ja @SafeVarargs.

@Override
public String toString() { return "User{" + name + "}"; }
@Deprecated(since = "2.0", forRemoval = true)
public void oldMethod() {}

Pikatarkistus

Mikä on ainoa säilytyskäytäntö, joka tekee annotaatiosta luettavan suorituksen aikana?

Kertaus

Määrittäkää annotaatiot @interface-määrityksellä. Käyttäkää @Retention(RUNTIME)-määritystä reflektiiviseen käsittelyyn, @Target-määritystä käytön rajoittamiseen ja default-määrettä valinnaisille elementeille. @Repeatable mahdollistaa annotaatioiden pinoamisen.

Aloita maksutta

Opi Java 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
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Annotaatioiden määrittäminen: elementit ja oletusarvot” ilmainen?

Kyllä – oppitunnin ”Annotaatioiden määrittäminen: elementit ja oletusarvot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Annotaatioiden määrittäminen: elementit ja oletusarvot”?

Luo mukautettuja annotaatioita @interface-määrityksellä, määritä elementtejä oletusarvoilla ja käytä meta-annotaatioita. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java 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 määrittäminen: elementit ja oletusarvot”-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ä Java Academy-oppitunnilla?

Kyllä. Jokainen Java 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 määrittäminen: elementit ja oletusarvot
  2. Säilytyskäytännöt ja kohdetyypit
  3. Annotaatioiden käsittely ajon aikana
  4. Käännösaikaiset annotaatioprosessorit
← Takaisin: Java Academy