Anotaciones simples de Java
JDK5 solo proporciona tres tipos de anotaciones simples. Estos tres se utilizan para evitar errores o proporcionar recordatorios, a saber:
1.Anular
2.Desaprobado
3.Suprimir advertencias
Es importante tener en cuenta que JDK5 (otro término, Tiger) en realidad no tiene muchas anotaciones integradas; en cambio, permite que Java central admita la capacidad de las funciones de anotación. En JSR-175 se establece estrictamente que está acostumbrado a hacerlo. definir funciones de metadatos debe ser escrito por el programador Tipos de anotaciones personalizadas, otros estándares JSR también han escrito una serie de tipos de anotaciones estándar. A continuación se utilizarán ejemplos para explicar estas tres anotaciones simples.
Anular anotación
La anotación Override indica que el método anotado necesita anular el método en la superclase.
Si un método usa esta anotación pero no anula el método en la superclase (por ejemplo, las mayúsculas son incorrectas, los parámetros son incorrectos o el método está definido por la propia subclase), el compilador generará un error.
(Nota: las anotaciones de anulación no se pueden usar en JRE5 cuando se implementan métodos en interfaces. JRE6 lo permite. Muchas veces JRE5 informará este error).
El ejemplo 1 demuestra anotaciones primordiales:
Ejemplo 1 de anotaciones de Java:
Copie el código de código de la siguiente manera:
clase pública Test_Override {
@Anular
cadena pública toString() {
return super.toString() + "Prueba usando la anotación 'Anular'";
}
}
¿Qué sucede si el nombre del método está mal escrito? Por ejemplo, si cambia el nombre del método toString a "tostring" (todo en minúsculas), recibirá un mensaje de error similar al siguiente al compilar:
Copie el código de código de la siguiente manera:
Compilando 1 archivo fuente en D:tempNueva carpeta (2)
TestJavaApplication1buildclasses
D:tempNueva carpeta (2)TestJavaApplication1srctest
myannotationTest_Override.java:24: el método no anula
un método de su superclase
@Anular
1 error
FALLÓ LA CONSTRUCCIÓN (tiempo total: 0 segundos)
Por supuesto, Eclipse informará directamente una cruz roja. Ahora que los IDE se han vuelto muy fáciles de usar, los principiantes no deberían meterse con la línea de comando JDK.
Anotación obsoleta
Esta anotación indica que el compilador debe mostrar un mensaje de advertencia si el programa llama a un elemento obsoleto (Obsoleto, obsoleto, obsoleto). El ejemplo 2 muestra cómo utilizar la anotación Obsoleto.
Ejemplo 2 de anotaciones en Java
Primero, cree una clase y marque un método como obsoleto de esta manera:
Copie el código de código de la siguiente manera:
clase pública Test_Deprecated {
@Obsoleto
público vacío hacer algo() {
System.out.println("Prueba usando anotación obsoleta: 'Obsoleta'");
}
}
A continuación, intenta llamar a este método desde otra clase:
Copie el código de código de la siguiente manera:
Anotaciones de prueba de clase pública {
public static void main (String arg []) lanza una excepción {
nuevas anotaciones de prueba();
}
Anotaciones de prueba públicas() {
Test_Deprecated t2=nuevo Test_Deprecated();
t2.hacerAlgo();
}
El método doSomething() en este ejemplo se declara como un método obsoleto. Por lo tanto, este método no debe llamarse en circunstancias normales. No aparecerá ningún mensaje de advertencia al compilar el archivo Test_Deprecated.java, pero al compilar TestAnnotations.java. Se mostrará un mensaje de advertencia similar a este (Eclipse advertirá):
Copie el código de código de la siguiente manera:
Compilando 1 archivo fuente en D:tempNueva carpeta
(2) Clases de compilación de TestJavaApplication1
D:tempNueva carpeta
(2)TestJavaApplication1srctestmyannotación
TestAnnotations.java:27:
advertencia: [obsoleto] hacer algo() en
test.myannotation.Test_Deprecated ha quedado obsoleto
t2.hacerAlgo();
1 advertencia
Suprimir anotación de advertencias
Esta anotación le dice al compilador que los mensajes de advertencia para el elemento anotado y todos los subelementos deben suprimirse. Se suprimirán todos los mensajes de advertencia para un conjunto de elementos y subelementos. Por ejemplo, suponga que utiliza la anotación Suppresswarnings en una clase. suprimir una advertencia. Si utiliza la anotación Suppresswarnings en un método para suprimir otra advertencia, ambas advertencias se suprimirán a nivel de método. Consulte el ejemplo 3.
Ejemplo 3 de anotaciones de Java:
Copie el código de código de la siguiente manera:
Anotaciones de prueba de clase pública {
public static void main (String arg []) lanza una excepción {
nuevas TestAnnotations().doSomeTestNow();
}
@SuppressWarnings({"deprecación"})
público vacío hacerSomeTestNow() {
Test_Deprecated t2 = nuevo Test_Deprecated();
t2.hacerAlgo();
}
}
En este ejemplo, @SuppressWarnings se utiliza para suprimir el mensaje de advertencia de obsolescencia que se muestra en el ejemplo 2. Debido a que este tipo de advertencia para este método está suprimido, ya no verá la advertencia de "obsolescencia".
Nota: Es mejor usar esta anotación en el elemento más interno. Por lo tanto, si solo desea suprimir una advertencia en un método específico, debe anotarla en el método en lugar de usar la anotación en la clase.
Metaanotaciones (tipo de anotación Java)
Las metaanotaciones, en realidad llamadas anotaciones, incluyen cuatro tipos:
1.Objetivo
2.Retención
3.Documentado
4.Heredado
Anotación de destino
La anotación de destino indica a qué elemento de destino se aplica el tipo de anotación. Contiene los siguientes valores de tipo de enumeración:
1.@Target(ElementType.TYPE): se puede aplicar a elementos de cualquier clase
2.@Target(ElementType.FIELD): solo se aplica a campos o propiedades
3.@Target(ElementType.METHOD): solo aplicable a anotaciones de métodos
4.@Target(ElementType.PARAMETER): solo se aplica a los parámetros del método
5.@Target(ElementType.CONSTRUCTOR): solo aplicable a constructores
6.@Target(ElementType.LOCAL_VARIABLE): solo aplicable a variables locales
7.@Target(ElementType.ANNOTATION_TYPE)——Indica que el tipo declarado en sí es un tipo de anotación
El ejemplo 4 demuestra la anotación Target:
Ejemplo de anotación Java 4
Primero, se define un tipo de anotación denominado Test_Target, con la metaanotación @Target, como se muestra a continuación:
Copie el código de código de la siguiente manera:
@Destino(TipoElemento.MÉTODO)
@interfaz pública Test_Target {
Cadena pública doTestTarget();
}
A continuación, cree una clase que se anotará con Test_Target:
Copie el código de código de la siguiente manera:
Anotaciones de prueba de clase pública {
principal vacío estático público (String arg []) {
nuevas TestAnnotations().doTestTarget();
}
// Usa anotaciones en los métodos, está bien.
// No puede haber saltos de línea en el medio, 2 líneas, etc. Java ignora los saltos de línea redundantes.
@Test_Target(doTestTarget="¡Hola mundo!")
público vacío doTestTarget() {
System.out.printf("Anotación de destino de prueba");
}
}
La anotación @Target(ElementType.METHOD) indica que el tipo de anotación solo se puede usar para anotar métodos. Si compila este código, no se mostrará ningún mensaje de advertencia. Sin embargo, ¿qué pasará si esta anotación se declara en una variable de cadena? ¿Qué?
Copie el código de código de la siguiente manera:
Anotaciones de prueba de clase pública {
// Este es un enfoque incorrecto y la compilación no se realizará porque la anotación está en el nivel incorrecto.
// Las metaanotaciones indican que solo se pueden anotar métodos y no se pueden usar para anotar propiedades.
@Test_Target(doTestTarget="¡Hola mundo!")
Cadena privada str;
público estático vacío principal (String arg []) {
nuevas TestAnnotations().doTestTarget();
}
público vacío doTestTarget() {
System.out.printf("Anotación de destino de prueba");
}
}
El único cambio es que la declaración de anotación pasa del nivel de método al nivel de campo, lo cual es incorrecto. Debido a que ha definido la anotación @Test_Target solo se aplica a nivel de método, si intenta compilar esta clase, puede obtener un error. mensaje como este:
Copie el código de código de la siguiente manera:
"TestAnnotations.java":
D:R_AND_DTestAnnotationsrctestmyannotation
TestAnnotations.java:16:
tipo de anotación no aplicable a este tipo de declaración en la línea
16, columna 0
@Test_Target(doTestTarget="¡Hola mundo!")
^
Error en la compilación javac