Я хочу учиться и веселиться с аннотациями. Вот мой пример использования: у меня есть куча классов, которые в основном играют одинаковую роль: проверяют URL видео на соответствие регулярному выражению (1 метод) и возвращают соответствующий встроенный HTML (другой метод).
Дело в том, что метод проверки всегда один и тот же. Конечно, я мог бы использовать наследование, но мне хотелось бы, чтобы можно было создать аннотацию, подобную этой:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.??)
@Inherited
@Documented
public @interface VideoProvider {
String regex();
int group() default 1;
}
Обработано так:
//processor class
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
for (TypeElement annotation : annotations) {
for (Element e : roundEnv.getElementsAnnotatedWith(annotation)) {
if (e.getKind().isClass()) {
//?????
}
}
}
return false;
}
Идея состоит в том, чтобы динамически изменять аннотированные классы, чтобы внедрить метод, который выполняет проверку.
Это возможно?
Заранее спасибо!
Rolf