Stempler ble lagt til Java-språket i Java 1.5 , og kan enkelt legge til en helt ny dynamikk til vanlig programmering. Enkelt sagt , merknader er en måte å legge til metadata til ulike aspekter av en klasse , ekstra informasjon som kan brukes til å endre måten klassen oppfører seg eller rett og slett å ytterligere beskrive det i oppførsel ikke lettere håndterbare via standard midler. Ved hjelp av merknader
Merknader er svært enkel å bruke, og kan brukes på flere områder av koden din . Et eksempel på noen merknader behandling ville være : en
@ Foreldet
public class MyClass ...
Hvilken ville markere klassen som " foreldet ", mao det bør ikke brukes hvis det er mulig. En annen merknad nyttig for demonstrative formål er SuppressWarnings merknad : en
@ SuppressWarnings ( " ubrukte ")
public void somethingWithUnusedVariables ( ) { ....
p Med dette eksempelet , kan du se at du kan sende informasjon til merknaden - i dette tilfellet , til den type advarsler undertrykke - som deretter kan brukes av ulike verktøy, for eksempel kompilatoren
det som er. en merknad ?
I Java-kode , er en benevning litt mer enn en vanlig grensesnitt. Opprette en er svært enkel : en
offentlig @ grensesnitt MyAnnotation {
}
Denne nye merknad kan brukes hvor som helst , for eksempel å dekorere en klasse : en < p > @ MyAnnotation
public class SomeClass ...
Of course, i denne formen , er det ganske ubrukelig - den inneholder ingen data og som standard alle merknader er lagret med klassen fil, men er ikke tilgjengelig under kjøring , slik at de tjener så lite mer enn en ekstra kommentar.
Opprette Nyttig merknader
p Som nevnt tidligere, som standard merknader er utilgjengelig på runtime . Dette er greit hvis du bare bruker det som en markør for noen form for andre utviklere å ta til etterretning , eller om du kommer til å gjøre noen bytecode - nivå behandling, men for å få tilgang til merknad under kjøring (via refleksjon ) må du fortelle kompilatoren til å gjøre det . Du kan gjøre dette med anotherent merknad som du bruker på din nye merknad : en
@ Retention ( RetentionPolicy.RUNTIME )
p Dette vil gi deg tilgang merknaden informasjon - gjennom refleksjon - mens koden er i gang og behandle den deretter.
Reading kommentar informasjon
Reading merknader informasjon under kjøring er litt vanskelig , men på ingen måte umulig. Ved hjelp av Java refleksjon funksjonalitet, kan du få kommentarer som er benyttet i en klasse , metode eller felt , samt all informasjon inkludert i denne kommentaren . For eksempel vurdere følgende enkle merknad : en
@ Retention ( RetentionPolicy.RUNTIME )
offentlig @ grensesnitt Forfatter {
String verdi ();
}
Anvendt til en klasse som så : en
@ Forfatter ( " John Doe ")
public class MyClass { ...
Du kan få forfatteren informasjon med følgende kode :
endelig Forfatter author = MyClass.class.getAnnotation ( Author.class ) ;
System.out.println ( author.value ( ) );