2014-10-13 3 views
0

При попытке проверить код во время выполнения с помощью Javassist мне нужно посмотреть аннотации. В качестве простого примера:Как проверить аннотации времени выполнения с помощью javassist

ClassPool pool = ClassPool.getDefault(); 
CtClass clazz = pool.getCtClass("org.junit.Test"); 
boolean found = false; 
for (Object annotation : clazz.getAvailableAnnotations()) { 
    if ("java.lang.annotation.Target".equals(annotation.getClass().getName())) { 
     found = true; 
    } 
} 

Проблема этот код никогда не устанавливает found = true. Классы аннотаций, которые получают возвращаемые:

com.sun.proxy.$Proxy8 
com.sun.proxy.$Proxy9 

Любая идея, как получить фактические аннотаций, а затем прокси? Или как получить фактическую аннотацию из прокси?

ответ

1

Объекты аннотации - это не прямые экземпляры типа аннотации, а экземпляры некоторого (прокси в этом случае) объекта, реализующего интерфейс аннотации.

Пробег: if (annotation instanceof java.lang.annotation.Target)

 Смежные вопросы

  • Нет связанных вопросов^_^