¿Cuál es el propósito de las anotaciones en Java? Tengo esta idea borrosa de ellos como algo entre un comentario y un código real. ¿Afectan al programa en tiempo de ejecución?
¿Cuáles son sus usos típicos?
¿Son exclusivos de Java? ¿Existe un equivalente en C ++?
java
annotations
glossary
Lehane
fuente
fuente
Respuestas:
Las anotaciones son utilizadas principalmente por código que inspecciona otro código. A menudo se utilizan 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.
fuente
No, pero VB y C # tienen atributos 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 el compilador puede usarlo para generar una advertencia (o error) si el método decorado no anula realmente otro método. Del mismo modo, los métodos se pueden marcar como obsoletos.Luego está la reflexión. Cuando refleja un tipo de clase en su código, puede acceder a los atributos y actuar de acuerdo con la información que se encuentra allí. No conozco ningún ejemplo en Java, pero en .NET el compilador lo usa para generar (des) serialización de información para clases, determinar el diseño de memoria de estructuras y declarar importaciones de funciones de 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 a nivel de clase, no a nivel de método.
fuente
Anders ofrece un buen resumen y aquí hay un ejemplo de una anotación JUnit
Aquí, la
@Test
anotación le dice a JUnit que elflatfileMissing
método es una prueba que debe ejecutarse y que el resultado esperado es un lanzamientoIOException
. Por lo tanto, cuando ejecute sus pruebas, se llamará a este método y la prueba pasará o fallará en función de si unIOException
se lanza una.fuente
Java también tiene la Herramienta de procesamiento de anotaciones (apt) donde no solo creas anotaciones, sino que también decides cómo funcionan estas anotaciones en el código fuente.
He aquí una introducción.
fuente
Para ver algunas cosas interesantes que puede hacer con Annotations, consulte mi procesador de anotaciones y anotaciones JavaBean .
Son excelentes para generar código, agregar validaciones adicionales durante su compilación, y también las he estado usando para un marco de mensajes de error (aún no publicado, es necesario aclarar con los jefes ...).
fuente
Por definición literal, una anotación agrega notas a un elemento. Asimismo, 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 de Java, los programas de Java tienen una gran cantidad de documentación informal que normalmente se incluye en los comentarios del archivo de código fuente. Pero, las anotaciones de Java son diferentes de los comentarios, ya que anotan los elementos del programa directamente usando tipos de anotaciones para describir la forma de las anotaciones. Las anotaciones de Java presentan la información de una manera estándar y estructurada para que pueda ser utilizada fácilmente por las herramientas de procesamiento.
Para leer en detalle, hay un buen tutorial sobre anotaciones de Java.
fuente
¿Cuándo usas la anotación @Override de Java y por qué? El enlace se refiere a una pregunta sobre cuándo se debe usar la anotación de anulación (@override). Esto podría ayudar a comprender mejor el concepto de anotación.
fuente
Las anotaciones cuando se trata de EJB se conocen como elegir el enfoque de middleware implícito sobre un enfoque de middleware explícito, cuando usa la 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 anotación: el código será
mientras usa Annotation, su código no contiene llamadas API engorrosas para usar los servicios de middleware. El código es limpio y se centra en la lógica empresarial.
fuente