Del 1. Jag har skrivit väldigt kort om annoteringar av typen SOURCE och CLASS. Detta är värt att läsa, för att slippa gå vilse i andra delen och för att utöka ditt "missförstånd" lite =) Jag lovar att det definitivt kommer att finnas minst ett ord som du kan! Första gången jag såg anteckningar i uppgifterna här ägnade jag på något sätt inte så mycket uppmärksamhet åt dem. Det finns @Override här och där, men IDEA lägger till det, så jag tänkte att det måste vara så. Med tiden insåg jag att allt är mycket djupare. När du studerar kan kommentarer verka något värdelösa men nödvändiga. Du vet inte varför de finns eller vad de gör. Du har läst ett par artiklar som sa, "det är så bra att vi har kommentarer nu, allt har blivit så enkelt." Men jag visste inte hur det var innan, och jag förstod inte att det är lättare nu. Nu vet jag och vill dela med mig lite. Det finns tre typer av (RetentionPolicy) kommentarer:
Native — Jag har aldrig sett detta och aldrig använt det. Jag tror att detta är en ganska sällsynt anteckning, eftersom den används när du behöver köra kod på ett annat "inhemskt" språk. Jag försökte och lyckades inte hitta ett tydligt omnämnande av det.
SuppressWarnings — Den här anteckningen används ofta så här: @SuppressWarnings("unchecked"). Det används för att undertrycka varningar som du redan är medveten om. Det föregående exemplet undertrycker varningar om omarkerade typkonverteringar. Återigen, detta är den enda användningen jag har stött på.
Genererad — Jag stöter på den här anteckningen just nu på grund av en uppgift där jag måste generera klasser från XSD-filer. Dessa 3 kommentarer är ganska specifika och är troligen ointressanta för dig för närvarande. Jag kommer att beskriva den sista.
Åsidosätt — Du använder det hela tiden och det gör något väldigt användbart. När man åsidosätter en metod är det lätt att göra fel utan IDEA:s hjälp. Oavsett om stavfel eller enkla fel inträffar misstag. Denna anteckning kommer att se till att metoden i den överordnade klassen matchar vår (kommenterade) metod. Detta säkerställer att metoden kommer att åsidosättas snarare än att läggas till. Vid refaktorisering av kod kan den överordnade metoden tas bort eller ändras. Återigen kommer denna kommentar att indikera ett fel. Utan den skulle vår metod helt enkelt läggas till. Tråkig? Jag skulle säga ja. Det finns inte mycket användbart att hämta från den här artikeln. Nästan allt (90%) här beskriver något som du aldrig kommer att använda eller bara väldigt sällan. De återstående 10 % säger hej till och beskriver @Override-kommentaren, som vid första anblicken är värdelös. Som sagt, jag tror att den andra delen av artikeln kommer att bli mer intressant. Det kommer att diskutera RUNTIME-kommentarer - de interagerar med koden under körning och gör svart magi. Anteckningar. Del 2. Lombok
- SOURCE — Anteckningar för kompilatorn
- KLASS — Information från anteckningen kommer att skrivas i bytekod men inte tillgänglig under körning. De säger att standardbiblioteket har många kommentarer av denna typ, som nu behålls för bakåtkompatibilitet. Detta används för mycket specifika uppgifter.
- Frågor och svar om StackOverflow
- RUNTIME — Dessa kommentarer är de mest populära. De används medan koden exekveras.
- 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/internal/Interned.class
- Native — En variabel med denna anteckning kan referera till ursprunglig kod;
- SuppressWarnings — Den här anteckningen undertrycker olika kompilatorvarningar;
- Genererad — Denna anteckning markerar källkod som genererades;
- Åsidosätt — Den här anteckningen kontrollerar metodöverstyrningar.