Anteckning (Java)
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 11 december 2021; kontroller kräver
3 redigeringar .
En Java-kommentar är en speciell form av syntaktisk metadata på Java -språket som kan läggas till i källkoden .
Anteckningar används för kodanalys, kompilering eller exekvering . Kommenterade paket, klasser, metoder, variabler och parametrar.
Ser ut som @ИмяАннотации, före definitionen av en variabel, parameter, metod, klass, paket.
Applikation
Anteckningen utför följande funktioner:
- ger nödvändig information för kompilatorn / tolken ;
- ger information till olika verktyg för att generera annan kod, konfigurationer etc.;
- kan användas under körning för att hämta data via reflektion;
Inline-kommentarer
Anteckningar tillämpade på källkoden:
- @Override - markörkommentar som endast kan tillämpas på metoder. En metod som är kommenterad med @Override måste åsidosätta en superklassmetod. @Åsidosätt - kontrollerar om en metod åsidosätts. Kastar ett kompilerings-/tolkningsfel om metoden inte hittas i den överordnade klassen eller gränssnittet;
- @Deprecated - noterar att metoden är föråldrad och inte rekommenderad för användning. Det antas att denna metod av någon anledning fortfarande finns kvar, men kommer att tas bort i framtida versioner. Ger en kompileringsvarning om metoden används;
- @SuppressWarnings - instruerar kompilatorn att undertrycka kompileringsvarningar definierade i anteckningsparametrarna;
- @SafeVarargs - indikerar att inget osäkert beteende associerat med parametern variabel antal argument är tillåtet. Gäller endast för variadiska metoder och konstruktorer som deklarerats som statiska eller slutgiltiga .
Anteckningar tillämpade på andra kommentarer:
- @Retention - bestämmer hur den markerade anteckningen kan lagras - i koden, i den kompilerade klassen eller medan koden körs. @Retention-kommentaren låter dig specificera livscykeln för annoteringen: om den endast kommer att finnas i källkoden, i den kompilerade filen, eller om den också kommer att vara synlig under körning. Att välja rätt typ beror på hur du vill använda annoteringen, till exempel för att generera något sida vid sida från källkoder, eller för att slå på klassen genom reflektion under exekvering .
- @Documented markerar en anteckning för inkludering i dokumentationen. @Documented-anteckningen indikerar att den sålunda markerade annoteringen bör läggas till i javadoc för fältet/metoden, och så vidare. Till exempel skulle en klass kommenterad utan @Documented se ut så här:public class TestClass utökar java . lang . Objekt
- @Target markerar en anteckning som en begränsning av vilka anteckningselement som kan tillämpas på den. @Target-kommentaren indikerar exakt vad vi kan markera med denna annotering, det kan vara ett fält, en metod, en typ, etc.
- @Inherited - indikerar att annoteringen kan utökas med underklasser av den annoterade klassen. @Inherited-anteckningen markerar en anteckning som kommer att ärvas av ett barn i klassen som är markerat med en sådan anteckning.
Exempel
offentlig klass Djur {
offentligt void speak () {
}
}
offentlig klass Katt förlänger Djur {
@Override // Anteckning som indikerar att denna metod åsidosätter den överordnade klassmetoden med samma namn
public void speak () {
System . ut . println ( "Mjau." );
}
@Föråldrad // Anteckning som indikerar att denna metod är utfasad och kommer att tas bort snart
public boolean soundsBra () {
return true ;
}
}
Skapa kommentarer
En annoteringsdeklaration liknar en gränssnittsdeklaration som använder @-tecknet framför nyckelordet interface :
@Ätbar
mat mat = ny mat ();
public @interface Ätbar { //
skapa din egen anteckning
}
Anpassade kommentarer kan innehålla olika värden, som beskrivs som anteckningsmetoder. Varje metoddeklaration definierar ett anteckningselement. Metoddeklarationen får inte innehålla några argument eller instruktioner throws. Returtypen måste vara en av: en primitiv typ , en sträng , en klass , en uppräknad typ och en matris som innehåller datatypen som listades tidigare. Metoder kan ha standardvärden.
@Edible ( true ) // tilldela sant värde till ätbar
mat mat = ny mat ();
public @interface Edible {
boolean edible () default false ; // som standard kommer ätbart att vara falskt
}
public @interface Author {
String first_name ();
Sträng efternamn ();
}
@Author ( first_name = "James" , last_name = "Gosling" )
Bokbok = ny bok ( );
// En annotering kan också annoteras för att definiera dess omfattning
@Target ({ ElementType . METHOD })
public @interface SomeAnnotation {}
public class SomeClass {
@SomeAnnotation
privat void doSomething (){}
}
Historik
Ursprungligen hade Java-plattformen en mekanism som föregick annoteringsmekanismen, till exempel transientmodifieraren eller @Deprecated- taggen . I september 2002 presenterades JSR-175 för Java-communityt, som beskrev huvudpunkterna om annoteringar. Det godkändes 2004. Anteckningar har blivit tillgängliga på själva språket sedan version 1.5 av JDK och beskrivs i JSR-269. I version 1.6 har annoteringar integrerats i javac- kompilatorn .
Länkar