Anotación (Java)
La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la
versión revisada el 11 de diciembre de 2021; las comprobaciones requieren
3 ediciones .
Una anotación Java es una forma especial de metadatos sintácticos en el lenguaje Java que se puede agregar al código fuente .
Las anotaciones se utilizan para el análisis, la compilación o la ejecución del código . Paquetes, clases, métodos, variables y parámetros anotados.
Parece que @ИмяАннотацииprecede a la definición de una variable, parámetro, método, clase, paquete.
Aplicación
La anotación realiza las siguientes funciones:
- da la información necesaria para el compilador / intérprete ;
- da información a varias herramientas para generar otro código, configuraciones, etc.;
- se puede usar en tiempo de ejecución para recuperar datos a través de la reflexión;
Anotaciones en línea
Anotaciones aplicadas al código fuente:
- @Override - anotación de marcador que solo se puede aplicar a los métodos. Un método anotado con @Override debe anular un método de superclase. @Override : comprueba si se anula un método. Lanza un error de compilación/interpretación si el método no se encuentra en la clase principal o interfaz;
- @Deprecated - señala que el método está desactualizado y no se recomienda su uso. Se supone que, por alguna razón, este método aún se conserva, pero se eliminará en futuras versiones. Genera una advertencia de compilación si se usa el método;
- @SuppressWarnings - indica al compilador que suprima las advertencias de compilación definidas en los parámetros de anotación;
- @SafeVarargs - indica que no se permite ningún comportamiento inseguro asociado con el parámetro número variable de argumentos. Se aplica solo a los métodos y constructores variádicos declarados como estáticos o finales .
Anotaciones aplicadas a otras anotaciones:
- @Retention - determina cómo se puede almacenar la anotación marcada: en el código, en la clase compilada o mientras se ejecuta el código. La anotación @Retention le permite especificar el ciclo de vida de la anotación: si estará presente solo en el código fuente, en el archivo compilado, o también será visible durante la ejecución. La elección del tipo adecuado depende de cómo desee utilizar la anotación, por ejemplo, para generar algo en paralelo a partir de los códigos fuente o para llamar a la clase a través de la reflexión durante la ejecución .
- @Documented marca una anotación para su inclusión en la documentación. La anotación @Documentada indica que la anotación así marcada debe agregarse al javadoc del campo/método, y así sucesivamente. Por ejemplo, una clase anotada sin @Documentada se vería así: clase pública TestClass extiende java . idioma _ Objeto
- @Target marca una anotación como limitante de los elementos de anotación que se le pueden aplicar. La anotación @Target indica qué podemos marcar exactamente con esta anotación, puede ser un campo, un método, un tipo, etc.
- @Inherited : indica que la anotación se puede ampliar mediante subclases de la clase anotada. La anotación @Inherited marca una anotación que heredará un elemento secundario de la clase marcada con dicha anotación.
Ejemplo
animal de clase pública {
público vacío hablar () {
}
}
clase pública Gato extiende Animal {
@Override // Anotación que indica que este método anula el método de la clase principal del mismo nombre
public void speak () {
System . fuera _ println ( "Miau." );
}
@Deprecated // Anotación que indica que este método está en desuso y se eliminará pronto
public boolean soundsGood () {
return true ;
}
}
Creación de anotaciones
Una declaración de anotación es similar a una declaración de interfaz que usa el signo @ delante de la palabra clave interface :
@Comida
comestible comida = nueva comida ( );
public @interface Edible {
// crea tu propia anotación
}
Las anotaciones personalizadas pueden incluir varios valores, que se describen como métodos de anotación. Cada declaración de método define un elemento de anotación. La declaración del método no debe incluir argumentos ni instrucciones throws. El tipo de retorno debe ser uno de: un tipo primitivo , una cadena , una clase , un tipo enumerado y una matriz que contenga el tipo de datos enumerado anteriormente. Los métodos pueden tener valores predeterminados.
@Comestible ( verdadero ) // asigna el valor verdadero al alimento comestible
alimento = nuevo alimento ( );
public @interface Comestible {
booleano comestible () por defecto falso ; // por defecto comestible será falso
}
public @interface Autor {
String first_name ();
Cadena apellido ();
}
@Autor ( nombre = "James" , apellido = "Gosling" )
Libro libro = nuevo Libro ();
// Una anotación también se puede anotar para definir su alcance
@Target ({ ElementType . METHOD })
public @interface SomeAnnotation {}
public class SomeClass {
@SomeAnnotation
private void hacerAlgo (){}
}
Historia
Originalmente, la plataforma Java tenía un mecanismo que precedía al mecanismo de anotación, como el modificador transitorio o la etiqueta @Deprecated . En septiembre de 2002, se presentó JSR-175 a la comunidad Java, describiendo los puntos principales de las anotaciones. Fue aprobado en 2004. Las anotaciones están disponibles en el propio lenguaje desde la versión 1.5 del JDK y se describen en JSR-269. En la versión 1.6, las anotaciones se han integrado en el compilador javac .
Enlaces