2013-09-16 2 views
3

Я запускаю этот код в junit-тест. Однако аннотации не найдены, и ничего не выводится. Что может быть причиной этого.Аннотации не найдены во время цикла

@Target(ElementType.FIELD) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Datafield { 
} 

public class EntityTest 
{ 
    @Datafield 
    StandardFieldText username; 

    @Test 
    public void TestEntityAnnotation() throws NoSuchFieldException, SecurityException 
    { 
     EntityTest et = new EntityTest(); 

     Annotation[] annos = et.getClass().getAnnotations(); 

     for(Annotation a : annos) 
      System.out.println(a); 


    } 
} 
+0

проверить импорт! – alfasin

ответ

2

Вы запрашиваете аннотации EntityTest класса, который на самом деле не имеет аннотаций.

Для того, чтобы получить аннотацию над полем вы должны попробовать:

Field f = ep.getDeclaredField("username"); 
Annotation[] annos = f.getDeclaredAnnotations(); 
+0

Как получить аннотации из поля имени пользователя? –

1

Вы запросили аннотации самого класса. Вы должны перебрать методы, поля и т.д., чтобы получить аннотации этих элементов: http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html

Например:

@Target(ElementType.FIELD) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Datafield { 
} 

public class EntityTest 
{ 
    @Datafield 
    StandardFieldText username; 

    @Test 
    public void TestEntityAnnotation() throws NoSuchFieldException, SecurityException 
    { 
     EntityTest et = new EntityTest(); 
     for(Method m : et.getClass().getDeclaredMethods()) { 
      Annotation[] annos = m.getDeclaredAnnotations(); 
      for(Annotation a : annos) 
       System.out.println(a); 
     } 

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