tengo un simple anotación de marcador para los métodos (similar al primer ejemplo en el artículo 35 en Effective Java (2ª ed)):¿Cómo encontrar métodos anotados en un paquete dado?
/**
* Marker annotation for methods that are called from installer's
* validation scripts etc.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface InstallerMethod {
}
Luego, en un paquete determinado (por ejemplo com.acme.installer
), que tiene unos pocos subpaquetes que contienen unas 20 clases, me gustaría encontrar todos los métodos que están anotados con él. (Porque me gustaría hacer algunos controles con respecto a todos los métodos anotados en una prueba unitaria).
¿Qué (si existe) es la forma más fácil de hacer esto? Preferiblemente sin agregar nuevas bibliotecas o marcos de terceros.
Editar: para aclarar, obviamente method.isAnnotationPresent(InstallerMethod.class)
será la forma de comprobar si un método tiene la anotación, pero este problema incluye la búsqueda de todos los métodos.
Comprobar http://stackoverflow.com/questions/520328/can-you-find-all-classes-in-a-package- using-reflection –
Hmm, sí, supongo que esto se debe a esa pregunta (que pregunté en febrero). : P Pero mientras que la respuesta correcta era "no, no se puede hacer usando reflexión", aquí la pregunta es * cómo * encontrar métodos anotados más fácilmente, usando cualquier medio ... – Jonik
Porque la parte difícil aquí no es realmente relacionado con las anotaciones (pero encontrando clases del paquete), esta pregunta no resultó tan relevante como pensaba. :/Oh, bueno, quizás esto podría ayudar a alguien a preguntarse sobre lo mismo ... – Jonik