English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderemos a través de ejemplos lo que son las anotaciones, diferentes anotaciones de Java y cómo usarlas.
Las anotaciones de Java son los metadatos de nuestro código fuente (datos sobre datos).
Proporcionan información adicional sobre el programa al compilador, pero no forman parte del programa en sí. Estas anotaciones no afectan la ejecución del programa compilado.
Las anotaciones comienzan con @. Su sintaxis es:
@AnnotationName
Vamos a tomar como ejemplo la anotación @Override.
@Override especifica que el método marcado con esta anotación sobrescribe el método con el mismo nombre, tipo de retorno y lista de parámetros de la clase padre.
Al modificar un método, no es necesario necesariamente usar @Override. Sin embargo, si lo hacemos, el compilador proporcionará un error si ocurre un error en la sobrescripción (por ejemplo, tipo de parámetros incorrecto).
class Animal { public void displayInfo() { System.out.println("Soy un animal."); } } class Dog extends Animal { @Override public void displayInfo() { System.out.println("Soy un perro."); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.displayInfo(); } }
resultado de salida
Soy un perro.
在此示例中,方法displayInfo()同时存在于父类Animal和子类中Dog。调用此方法时,将调用子类的方法,而不是超类中的方法。
注解也可以包括元素(成员/属性/参数)。
标记注解不包含成员/元素。它仅用于标记声明。
其语法为:
@AnnotationName()
由于这些注解不包含元素,因此不需要括号。例如,
@Override
单个元素注解仅包含一个元素。
其语法为:
@AnnotationName(elementName = "elementValue")
如果只有一个元素,则习惯上将该元素命名为value。
@AnnotationName(value = "elementValue")
在这种情况下,也可以移除元素名称。元素名称value默认为。
@AnnotationName("elementValue")
这些注解包含多个用逗号分隔的元素。
其语法为:
@AnnotationName(element1 = "value1", element2 = "value2")
任何声明都可以通过将其放在声明上面来标记注解。从Java 8开始,注释也可以放在类型之前。
Como se mencionó anteriormente, los comentarios de Java se pueden放置在类,方法,接口,字段和其他程序元素声明的上方。
import java.util.*; class Main { @SuppressWarnings("unchecked") static void wordsList() { ArrayList wordList = new ArrayList<>(); //Esto llevará a advertencias no verificadas wordList.add("w"}}3codebox"); System.out.println("Word list => " + wordList); } public static void main(String args[]) { wordsList(); } }
resultado de salida
Word list => [w3codebox]
Si el programa anterior se compila sin usar la anotación @SuppressWarnings("unchecked"), el compilador aún compilará el programa, pero emitirá el siguiente aviso:
Main.java utiliza operaciones no verificadas o inseguras. Word list => [w3codebox]
recibimos una advertencia
Main.java utiliza operaciones no verificadas o inseguras
debido a la siguiente语句。
ArrayList wordList = new ArrayList<>();
Esto se debe a que aún no hemos definido el tipo genérico de la lista de arrays. Podemos resolver esta advertencia especificando el genérico entre corchetes <>.
ArrayList<String> wordList = new ArrayList<>();
en Java 8Antes, los comentarios solo se podían aplicar a declaraciones. Ahora, también se pueden usar comentarios de tipo. Esto significa que podemos colocar anotaciones en cualquier lugar donde se utilice el tipo.
llamada al constructor
new @Readonly ArrayList<>()
definición de tipo
@NonNull String str;
Esta declaración especifica una variable no nula de tipo String str para evitar NullPointerException.
@NonNull List<String> newList;
Esta declaración especifica una lista no nula de tipo String.
List<@NonNull String> newList;
Esta declaración especifica una lista de valores no nulos de tipo String.
conversión de tiponewStr = (@NonNull String) str;
cláusulas extends y implements
class Warning extends @Localized Message
throws cláusula
public String readMethod() throws @Localized IOException
Los comentarios de tipo mejoran el análisis del código Java y proporcionan una verificación de tipo más potente.
1. Anotaciones predefinidas
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
2. Metaanotaciones
@Retention
@Documented
@Target
@Inherited
@Repeatable
3. Anotaciones personalizadas
Estos tipos de anotaciones enTipos de anotaciones JavaSe describe en detalle en el tutorial.
Instrucciones del compilador - Se pueden usar para proporcionar instrucciones al compilador, detectar errores o prohibir advertencias. Por ejemplo, las anotaciones integradas @Deprecated, @Override, @SuppressWarnings.
Instrucciones a tiempo de compilación - Estas anotaciones proporcionan instrucciones a tiempo de compilación que ayudan a las herramientas de construcción de software a generar código, archivos XML, etc.
Instrucciones en tiempo de ejecución - Se pueden definir algunas anotaciones para proporcionar instrucciones al programa en tiempo de ejecución. Estas anotaciones se acceden mediante reflexión Java.