Доступны ли метааннотации Java во время выполнения? - PullRequest
3 голосов
/ 14 июля 2010

Я создал метааннотацию и применил ее к аннотации, но не могу найти какой-либо способ узнать, какие метааннотации связаны с аннотацией во время выполнения. Это на самом деле поддерживается в JDK 6?

например:.

/**
 * Meta-annotation for other annotations declaring them to be "filter" annotations
 */
@Target(ElementType.ANNOTATION_TYPE)  // make this a meta-annotation
@Retention(RetentionPolicy.RUNTIME)   // available at runtime
public @interface Filter
{
}

/**
 * Marks a test as only being applicable to TypeOne clients
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Filter
public @interface TypeOne
{
}

public class MyClientClass
{
   // Would like to scan this method to see if the method has an Annotation that is of meta-type "Filter"
   @TypeOne 
   public void testMethod()
   {
   }
}

Просто найти методы с аннотацией "TypeOne", но как только я получу эту аннотацию под рукой, как я могу во время выполнения выяснить, имеет ли эта аннотация как связанную метааннотацию (например, "Фильтр")?

1 Ответ

3 голосов
/ 14 июля 2010

У меня уже есть ответ извините:

annotation.annotationType().isAnnotationPresent(Filter.class)

...