У меня есть простой маркер аннотацию для методов (аналогично первому примеру, в пункте 35 в Эффективное Java (2-е изд)):Как найти аннотированные методы в заданном пакете?
/**
* Marker annotation for methods that are called from installer's
* validation scripts etc.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface InstallerMethod {
}
Затем, в данном пакете (скажем com.acme.installer
), который имеет несколько подпакетов, содержащих около 20 классов, я бы хотел найти все методы, аннотированные с ним. (Потому что я хотел бы сделать некоторые проверки относительно всех аннотированных методов в модульном тесте.)
Что (если есть) - это самый простой способ сделать это? Предпочтительно без добавления новых сторонних библиотек или фреймворков.
Редактировать: уточнить, очевидно, method.isAnnotationPresent(InstallerMethod.class)
будет способ проверить, есть ли метод в аннотации, но эта проблема включает в себя поиск всех методов.
Проверить http://stackoverflow.com/questions/520328/can-you-find-all-classes-in-a-package- используя отражение –
Хм, да, я думаю, это возвращается к этому вопросу (который я спросил в феврале). : P Но в то время как правильный ответ был «нет, это невозможно сделать с помощью отражения», здесь вопрос * как * найти наиболее удобные методы, используя любые средства ... – Jonik
Потому что сложная часть здесь не совсем связанный с аннотациями (но поиск классов из пакета), этот вопрос не оказался столь значимым, как я думал. :/Ну ладно, возможно, это все равно поможет кому-то задаться вопросом о том же ... – Jonik