? Java merknader, lagt i Java 1.5 , kan legge til ekstra informasjon om en klasse , metode eller felt . Denne informasjonen kan brukes på ulike måter , for eksempel viser hvordan et program skal utføre , eller hvilke metoder bør unngås av andre utviklere . Avhengig av hvordan merknadene ble opprinnelig kodet, kan denne informasjonen være tilgjengelig bare i den originale kildekoden , når du arbeider med den kompilerte klassen direkte eller under kjøring via refleksjon . ? Hva er Stempler
Enkelt sagt , er en benevning et middel for å legge ytterligere informasjon - også kjent som metadata - til ditt program om den kommenterte elementet. Denne informasjonen kan være så enkelt som et notat detaljering forfatterskap eller noe så komplisert som å knytte et felt med en database kolonne. Merknader kan håndteres på en av tre måter: ved å bo utelukkende i den originale kildekoden , hvor de er vanligvis bare synlig for andre utviklere , ved å være kompilert inn i bytecode , der de ikke er tilgjengelige for runtime behandling, men er tilgjengelig for programmer tilgang til klassen filene , og blir satt sammen slik at informasjonen er lastet under kjøring så kjører programmet får tilgang til den
Hvorfor Krev Merknadsverktøy detaljer på Runtime
Fordi . ? en utvikler kan indikere ytterligere informasjon om et element , å ha denne informasjonen tilgjengelig under kjøring kan tillate et program å handle annerledes for dette elementet uten nødvendigvis å kreve at informasjonen til å kompilere ( eller funksjon ) . For eksempel vurdere en merknad som knytter et felt med en database kolonne , kanskje det vil se omtrent slik ut : en
@ DBField ( "fornavn ")
private String fornavn ;
< p> Under gjennomføring, kan programmet lese denne informasjonen og realisere det bør fylle dette feltet basert på innholdet i den kolonnen (gitt, ville det trenger også bord og raden ) . Dette vil også tillate brukeren å skrive , for eksempel en generisk data håndtering rutine som er avhengig av merknader og trenger ikke mye spesialisering for hver klasse .
Hvordan Java Merknader ignoreres
p Som nevnt tidligere , er det tre måter for kompilatoren å håndtere en merknad den kommer over i kode : ved opphugging den (og dermed forlate den bare i koden ) , ved å samle den inn i bytecode og ved å samle den inn i bytecode med nødvendig informasjon for å laste det under kjøring. Det andre alternativet - å samle det inn i bytecode (uten legger det under kjøring ) - er standard for alle merknader, så med mindre annet er spesifisert , vil en merknad ikke være tilgjengelig under kjøring. Men spesifisere dette er svært enkelt hvis du har tilgang til merknaden kildekode. Bare legg en ekstra merknad til merknad definisjon : en
@ Retention ( RetentionPolicy.RUNTIME )
offentlig @ grensesnitt MyAnnotation ...
Bruke Stempler på Runtime
Når du har forsikret merknaden er tilgjengelig under kjøring , ved hjelp av det er ekstremt enkelt. Forutsatt at du har en merknad som heter " forfatter" med en streng verdi, kan du bruke følgende kode for å sørge for at du har runtime tilgang til merknad : en
endelig Forfatter author = MyClass.class.getAnnotation ( Author. klasse) ;
System.out.println ( author.value ( ));
I dette tilfellet ville MyClass bli erklært som følger : en
@ Forfatter ( " John Doe ")
public class MyClass ...
Når du utfører linjene ovenfor, bør du få verdien for merknaden ( " John Doe ", i dette tilfellet) skrives til konsollen .