Definition af annotationer: elementer og standardværdier
Opret brugerdefinerede annotationer med @interface, definér elementer med standardværdier, og anvend meta-annotationer.
Definition af annotationer: elementer og standardværdier er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad er annoteringer?
Annoteringer er metadata, der anvendes på klasser, metoder, felter eller parametre. De ændrer ikke adfærden direkte – de giver oplysninger til compilere, frameworks eller processorer ved kørsel.
Deklarering af en annotering med @interface
Brug @interface til at deklarere en brugerdefineret annotering. Elementer ligner metoder. Standardværdien angives med default.
@interface Retry {
int times() default 3;
long delayMs() default 1000L;
Class<? extends Throwable>[] on() default {Exception.class};
}Anvendelse af annoteringen
Anvend annoteringen på målet. Udelad elementer, der har standardværdier. Når kun ét element hedder value, kan det angives uden nøgle.
@Retry(times = 5, delayMs = 500)
public void callExternalService() { ... }
// Single-element shorthand:
@interface Label { String value(); }
@Label("production")
public class App {}Typer for annoteringselementer
Elementer kan kun være: primitive typer (int, long osv.), String, Class, en enum, en anden annoteringstype eller et endimensionalt array af ovenstående.
@interface Config {
String host();
int port() default 8080;
LogLevel level() default LogLevel.INFO; // enum
Class<?> handler() default DefaultHandler.class;
String[] tags() default {};
}Meta-annoteringer: @Retention
@Retention bestemmer, hvor længe annoteringen bevares: SOURCE (kasseres af compileren), CLASS (i .class, ikke ved kørsel), RUNTIME (kan læses via reflection).
@Retention(RetentionPolicy.RUNTIME)
@interface Retry {
int times() default 3;
}Meta-annoteringer: @Target
@Target begrænser, hvor annoteringen kan anvendes. Flere mål kan angives.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Audited {
String description() default "";
}@Documented og @Inherited
@Documented inkluderer annoteringen i Javadoc. @Inherited gør det muligt for underklasser at nedarve annoteringen fra deres superklasse (kun for annoteringer på klasseniveau).
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Category {
String value();
}Annoteringer med @Repeatable
Markér en annotering med @Repeatable, så den kan forekomme flere gange på samme element. Angiv en containerannotering, der indeholder et array.
@Repeatable(Tags.class)
@interface Tag { String value(); }
@interface Tags { Tag[] value(); }
@Tag("fast")
@Tag("stable")
public class Service {}Standardværdier og udeladelse af elementer
Elementer med default-værdier behøver ikke at blive angivet ved kaldsstedet. Elementer uden standardværdier er obligatoriske.
@Retry // uses defaults: times=3, delayMs=1000
public void action1() {}
@Retry(times=1) // overrides only times; delayMs stays 1000
public void action2() {}Annotering kontra markørgrænseflade
Markørgrænseflader (som Serializable) kontrolleres med instanceof og formidler typeoplysninger. Annoteringer er mere fleksible – de indeholder metadata og kan have elementer.
Almindelige indbyggede annoteringer
Kend JDK's indbyggede annoteringer: @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings og @SafeVarargs.
@Override
public String toString() { return "User{" + name + "}"; }
@Deprecated(since = "2.0", forRemoval = true)
public void oldMethod() {}Hurtigt tjek
Hvilken bevaringspolitik er den eneste, der gør en annotering læsbar ved kørsel?
Opsummering
Deklarér annoteringer med @interface. Brug @Retention(RUNTIME) til reflection-baseret behandling, @Target til at begrænse anvendelsen og default til valgfrie elementer. @Repeatable gør det muligt at stable annoteringer.
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Definition af annotationer: elementer og standardværdier” gratis?
Ja — hele teksten til “Definition af annotationer: elementer og standardværdier” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Definition af annotationer: elementer og standardværdier”?
Opret brugerdefinerede annotationer med @interface, definér elementer med standardværdier, og anvend meta-annotationer. Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Definition af annotationer: elementer og standardværdier”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Definition af annotationer: elementer og standardværdier
- Retention-politikker og target-typer
- Annotation-behandling under kørsel
- Annotation-processorer ved kompilering