Anotaciones

Una anotación en Java es una forma de añadir metadatos al código fuente en tiempo de ejecución jugando con ellas las API´s de reflexión ( java.lang.reflect ). Estas son fundamentales para los EJB3 ya que con ellas indicamos el tipo de bean, forma de persistencia,..., recordamos que un EJB3 es un "POJO + @ (anotación)". Otra características de las anotaciones es que posibilita el control sobre los aspectos de la programación orientada a Aspectos (AOP), como ejemplo la seguridad.

Para que una anotación sea detectable en tiempo de ejecución se ha de hacer uso de la siguinete anotación: @Retention(value=RetentionPolicy.RUNTIME).

Las anotaciones pueden aplicarse tanto a clases como a propiedades, métodos...

Las Anotaciones son declaradas igual que las interfaces con la única excepción de que lleva precedico el caracter @. Veamos un ejemplo :


//Creamos una clase tipo enumerado.


package es.ejemplo.anotacion;


public enum TipoUsuario {
cliente,administrador
}

//Creamos una anotación.


package es.ejemplo.anotacion;


import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


/*La linea siguiente es obligatoria para que sea detectable en tiempo de ejecución.*/
@Retention(value=RetentionPolicy.RUNTIME)
public @interface AnotacionUsuario {
TipoUsuario tipo(); //Se trata de un atributo de la anotación.
}

//Aplicamos la anotación a una clase de ejemplo.


package es.ejemplo.anotacion;


@AnotacionUsuario(tipo=TipoUsuario.cliente)
public class ExisteAnotacion {

//Propiedades y métodos a implementar...
}

//Comprobamos que realmente existe la anotación.


package es.ejemplo.anotacion;


import org.testng.annotations.Test;


public class TestAnotacion{


@Test
public void pruebaExisteAnotacion(){
if (ExisteAnotacion.class.isAnnotationPresent
(AnotacionUsuario.class))
assert(true);
else
assert(false);
}
}