notacion ejemplo crear anotaciones annotation java annotations glossary

ejemplo - Anotaciones de Java



java lang annotation (9)

¿Cuál es el propósito de las anotaciones en Java? Tengo esta idea borrosa de ellos como en algún lugar entre un comentario y el código real. ¿Afectan el programa en tiempo de ejecución?

¿Cuáles son sus usos típicos?

¿Son exclusivos de Java? ¿Hay un equivalente en C ++?


Además, ¿son exclusivos de Java? ¿Existe un equivalente en C ++?

No, pero VB y C # tienen attributes que son lo mismo.

Su uso es bastante diverso. Un ejemplo típico de Java, @Override no tiene ningún efecto en el código pero puede ser utilizado por el compilador para generar una advertencia (o error) si el método decorado no reemplaza a otro método. Del mismo modo, los métodos se pueden marcar obsoletos.

Luego hay reflexión. Cuando reflejas un tipo de clase en tu código, puedes acceder a los atributos y actuar de acuerdo con la información que allí se encuentra. No conozco ningún ejemplo en Java, pero en .NET esto lo usa el compilador para generar (de)serialization información de (de)serialization para las clases, determinar el diseño de la memoria de las estructuras y declarar las importaciones de funciones de las bibliotecas heredadas (entre otras). También controlan cómo funciona el diseñador de formularios IDE.

/ EDITAR: los atributos de las clases son comparables a las interfaces de etiquetas (como Serializable en Java). Sin embargo, las pautas de codificación de .NET dicen que no se deben usar interfaces de etiquetas. Además, solo funcionan en el nivel de clase, no en el nivel de método.


Anders da un buen resumen, y aquí hay un ejemplo de una anotación JUnit

@Test(expected=IOException.class) public void flatfileMissing() throws IOException { readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat"); }

Aquí la anotación @Test está diciendo a JUnit que el método flatfileMissing es una prueba que debe ejecutarse y que el resultado esperado es una IOException lanzada. Por lo tanto, cuando ejecute sus pruebas, se llamará a este método y la prueba se aprobará o no según la IOException .


Cuando se trata de EJB, las anotaciones se conocen como elegir un método de middleware implícito sobre un enfoque de middleware explícito, cuando usa una anotación, está personalizando lo que necesita exactamente de la API, por ejemplo, necesita llamar al método de transacción para una transferencia bancaria. : sin usar la anotación: el código será

transfer(Account account1, Account account2, long amount) { // 1: Call middleware API to perform a security check // 2: Call middleware API to start a transaction // 3: Call middleware API to load rows from the database // 4: Subtract the balance from one account, add to the other // 5: Call middleware API to store rows in the database // 6: Call middleware API to end the transaction }

durante el uso de Anotación, su código no contiene incómodas llamadas API para usar los servicios de middleware. El código está limpio y enfocado en la lógica de negocios

transfer(Account account1, Account account2, long amount) { // 1: Subtract the balance from one account, add to the other }


Java también tiene la herramienta de procesamiento de anotaciones (apt) donde no solo crea anotaciones, sino que también decide cómo funcionan estas anotaciones en el código fuente.

Here hay una introducción.


Las anotaciones se usan principalmente por código que está inspeccionando otro código. A menudo se usan para modificar (es decir, decorar o envolver) clases existentes en tiempo de ejecución para cambiar su comportamiento. Los marcos como JUnit e Hibernate usan anotaciones para minimizar la cantidad de código que necesita escribir usted mismo para usar los marcos.

Oracle tiene una buena explicación del concepto y su significado en Java en su sitio.


Para ver algunas cosas interesantes que puedes hacer con Anotaciones, mira mis anotaciones JavaBean y el procesador de anotaciones .

Son geniales para generar código, agregar validaciones adicionales durante su compilación, y también he estado usándolos para un marco de mensaje de error (aún no publicado, debe limpiarlo con los jefes ...).


Por definición literal, una anotación agrega notas a un elemento. Del mismo modo, las anotaciones de Java son etiquetas que insertamos en el código fuente para proporcionar más información sobre el código. Las anotaciones de Java asocian información con el elemento de programa anotado. Además de las anotaciones Java, los programas Java tienen una gran cantidad de documentación informal que, por lo general, está contenida dentro de los comentarios en el archivo de código fuente. Sin embargo, las anotaciones de Java son diferentes de los comentarios que anotan los elementos del programa directamente utilizando tipos de anotación para describir la forma de las anotaciones. Las anotaciones de Java presentan la información de forma estándar y estructurada para que pueda ser usada de manera amenazante por las herramientas de procesamiento.

Para leer en detalle, hay un buen tutorial sobre anotaciones de Java



Las anotaciones , una forma de metadatos, proporcionan datos sobre un programa que no es parte del programa en sí. Las anotaciones no tienen un efecto directo en el funcionamiento del código que anotan.

Las anotaciones tienen varios usos, entre ellas:

  • Información para el compilador : el compilador puede usar las anotaciones para detectar errores o suprimir advertencias.
  • Procesamiento en tiempo de compilación y en tiempo de implementación : las herramientas de software pueden procesar información de anotación para generar código, archivos XML, etc.
  • Procesamiento en tiempo de ejecución : algunas anotaciones están disponibles para examinarse en tiempo de ejecución.

El alcance de visibilidad está definido por las constantes java.lang.annotation.RetentionPolicy SOURCE , CLASS y RUNTIME

  • RetentionPolicy.SOURCE : la anotación estaría disponible en el código fuente del programa y puede ser utilizada por el compilador o apt para la generación de código.
  • RetentionPolicy.CLASS : la anotación estaría en el archivo .class, pero no estaría disponible en tiempo de ejecución. Utilizado por herramientas de manipulación de código de bytes, como ASM realiza las modificaciones
  • RetentionPolicy.RUNTIME : la anotación estaría disponible en el archivo .class y en el tiempo de ejecución, para su inspección a través de la reflexión java a través de getAnnotations ().