English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo de Java

Java Array

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Queue (cola)

Conjuntos de Map de Java

Conjuntos de Java

Entrada y salida de Java (I)/O)

Reader de Java/Writer

Otras temáticas de Java

Anotaciones (Annotations) de Java

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).

示例1:@Override 注解示例

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。调用此方法时,将调用子类的方法,而不是超类中的方法。

注解格式

注解也可以包括元素(成员/属性/参数)。

1.标记注解

标记注解不包含成员/元素。它仅用于标记声明。

其语法为:

@AnnotationName()

由于这些注解不包含元素,因此不需要括号。例如,

@Override

2.单元素注解

单个元素注解仅包含一个元素。

其语法为:

@AnnotationName(elementName = "elementValue")

如果只有一个元素,则习惯上将该元素命名为value。

@AnnotationName(value = "elementValue")

在这种情况下,也可以移除元素名称。元素名称value默认为。

@AnnotationName("elementValue")

3.多元素注解

这些注解包含多个用逗号分隔的元素。

其语法为:

@AnnotationName(element1 = "value1", element2 = "value2")

注解位置

任何声明都可以通过将其放在声明上面来标记注解。从Java 8开始,注释也可以放在类型之前。

1.在声明语句上方

Como se mencionó anteriormente, los comentarios de Java se pueden放置在类,方法,接口,字段和其他程序元素声明的上方。

示例2:@SuppressWarnings注释示例

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<>();

2.comentarios de tipo

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 tipo
newStr = (@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.

Tipos de anotaciones

1. Anotaciones predefinidas

  1. @Deprecated

  2. @Override

  3. @SuppressWarnings

  4. @SafeVarargs

  5. @FunctionalInterface

2. Metaanotaciones

  1. @Retention

  2. @Documented

  3. @Target

  4. @Inherited

  5. @Repeatable

3. Anotaciones personalizadas

Estos tipos de anotaciones enTipos de anotaciones JavaSe describe en detalle en el tutorial.

Uso de anotaciones

  • 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.