2012-01-24 20 views
9

Hola: quería asegurarme de que haya una anotación presente en el momento de la compilación en una clase. Es posible ? Me doy cuenta de que las annoataions son, en sí mismas, clases, así que supongo que sí, pero no estoy seguro sintácticamente dónde y cómo aplicar/implementar tal estructura en mis clases.Aplicación de anotaciones Java en tiempo de compilación

+0

A menudo he visto las comprobaciones de anotación utilizadas como parte de un conjunto de pruebas unitarias. Que este trabajo para usted? – templatetypedef

+0

Bueno, tengo algunas constantes que deben obtenerse de las clases. Las clases tienen un constructor feo, así que no puedo aplicarlas usando getters. Así que pensé en anotar la clase usando anotaciones con los parámetros constantes como campos de anotación. – jayunit100

Respuesta

14

Puede escribir un procesador de anotaciones para ejecutar una lógica arbitraria en tiempo de compilación.

Desde un procesador de anotaciones, puede hacer cosas como comprobar si una clase tiene una estructura particular o miembro presente si existe una anotación particular en esa clase. Son bastante flexibles: para tener una idea más clara de lo que puedes hacer con ellos echa un vistazo a the API. También se admiten en IDEs principales como Eclipse y Netbeans.

Una introducción a la escritura de un procesador de anotación es here.

+0

Esta es una buena respuesta. Voy a esperar para ver si hay un nivel más alto o un enfoque más simple (es decir, una forma de simplemente hacer cumplir esto en el código/clases existente). – jayunit100

+0

Por lo que puedo decir, el procesador de anotaciones omitirá el procesamiento en las clases que aún no tienen las anotaciones, que no parece ser lo que el OP está buscando. Estoy buscando la misma solución, así que si me equivoco, me encantaría un ejemplo. –

+2

Si usa @SupportedAnnotationTypes ("*") en su procesador, recogerá todas las clases, incluso si no hay anotaciones en él. – prunge

Cuestiones relacionadas