Del 1. Jeg har skrevet veldig kort om merknader av typen KILDE og KLASSE. Dette er verdt å lese, for å unngå å gå deg vill i andre del og for å utvide "misforståelsen" din litt =) Jeg lover at det definitivt vil være minst ett ord du kan! Den første gangen jeg så merknader i oppgavene her la jeg på en eller annen måte ikke så mye oppmerksomhet til dem. Det er @Override her og der, men IDEA legger det til, så jeg tenkte at det måtte være sånn. Over tid innså jeg at alt er mye dypere. Når du studerer, kan merknader virke noe ubrukelige, men nødvendige. Du vet ikke hvorfor de eksisterer eller hva de gjør. Du har lest et par artikler som sa: "det er så flott at vi har merknader nå, alt har blitt så enkelt." Men jeg visste ikke hvordan ting var før, og jeg skjønte ikke at ting er lettere nå. Nå vet jeg og vil dele litt. Det er 3 typer (RetentionPolicy) merknader:
Innfødt — Jeg har aldri sett dette og har aldri brukt det. Jeg tror dette er en ganske sjelden merknad, fordi den brukes når du skal kjøre kode på et annet "native" språk. Jeg prøvde og klarte ikke å finne en klar omtale av det.
SuppressWarnings — Denne merknaden brukes ofte slik: @SuppressWarnings("unchecked"). Den brukes til å undertrykke advarsler som du allerede er klar over. Det forrige eksemplet undertrykker advarsler om ukontrollerte typekonverteringer. Igjen, dette er den eneste bruken jeg har møtt.
Generert — Jeg støter på denne merknaden akkurat nå på grunn av en oppgave der jeg må generere klasser fra XSD-filer. Disse 3 merknadene er ganske spesifikke og er mest sannsynlig uinteressante for deg for øyeblikket. Jeg vil beskrive den siste.
Overstyr — Du bruker det konstant, og det gjør noe veldig nyttig. Når du overstyrer en metode, er det lett å gjøre feil uten IDEAs hjelp. Enten skrivefeil eller enkle feil, feil skjer. Denne merknaden vil sørge for at metoden i den overordnede klassen samsvarer med vår (annoterte) metode. Dette sikrer at metoden blir overstyrt i stedet for å legges til. Ved refaktorisering av kode kan den overordnede metoden fjernes eller endres. Igjen vil denne merknaden indikere en feil. Uten den ville metoden vår ganske enkelt blitt lagt til. Kjedelig? Jeg vil si ja. Det er ikke mye nyttig å hente ut av denne artikkelen. Nesten alt (90%) her beskriver noe du aldri kommer til å bruke eller bare svært sjelden. De resterende 10 % sier hei til og beskriver @Override-kommentaren, som ved første øyekast er ubrukelig. Når det er sagt, tror jeg den andre delen av artikkelen vil være mer interessant. Det vil diskutere RUNTIME-kommentarer - de samhandler med koden under utførelse og gjør svart magi. Merknader. Del 2. Lombok
- KILDE — Merknader for kompilatoren
- KLASSE — Informasjon fra merknaden vil bli skrevet i bytekode, men ikke tilgjengelig under kjøring. De sier at standardbiblioteket har mange merknader av denne typen, som nå beholdes for bakoverkompatibilitet. Dette brukes til veldig spesifikke oppgaver.
- Spørsmål og svar på StackOverflow
- RUNTIME — Disse kommentarene er de mest populære. De brukes mens koden kjøres.
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/intern/Interned.class
- Native — En variabel med denne merknaden kan referere til opprinnelig kode;
- SuppressWarnings — Denne merknaden undertrykker ulike kompilatoradvarsler;
- Generert — Denne merknaden markerer kildekoden som ble generert;
- Overstyring — Denne merknaden kontrollerer metodeoverstyringer.