miércoles, 26 de diciembre de 2007

Java: Anotaciones

Crear una anotacion

Para crear una anotacion es necesario crear un archivo cuyo nombre sea el de la anotacion y su extension .java. En el caso de la anotacion de ejemplo resulta que el archivo Ejemplo.java tendra el siguiente contenido:

package anotaciones;

public @interface Ejemplo {}


Aplicar politicas a la anotacion

Las anotaciones pueden emplearse para anotar codigo fuente, empleando procesadores de anotaciones, o para anotar clases en tiempo de ejecucion.
La anotacion de ejemplo se debera modificar de la siguiente manera para que sea utilizada por procesadores de anotaciones en tiempo de compilacion:

package anotaciones;

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

@Retention(RetentionPolicy.SOURCE)
public @interface Ejemplo {}


En caso que sea necesario acceder a la misma en tiempo de ejecucion, sera necesario emplear una politica de retencion diferente:

package anotaciones;

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

@Retention(RetentionPolicy.RUNTIME)
public @interface Ejemplo {}


En los ejemplos anteriores se usaron anotaciones de anotaciones, y son llamadas meta-anotaciones.

Restringir elementos a los cuales se aplica la anotacion

En los ejemplos anteriores tampoco se aplico limitacion alguno en cuanto al uso de la anotacion de ejemplo. Las anotaciones pueden ser aplicadas a clases, metodos, atributos, etc, siempre y cuando se indique cual es su objetivo.
La anotacion de ejemplo sera entonces empleada en tiempo de ejecucion, solo en metodos, con lo cual resultara:

package anotaciones;

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Ejemplo {}


Uso de anotaciones en tiempo de ejecucion

A continuacion se emplea el ultimo ejemplo de anotacion presentado antes.

No hay comentarios.: