getAnnotations()为空

时间:2015-07-31 11:42:45

标签: java annotations

我有以下代码:

import java.lang.annotation.*;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}

失败测试:

@MyAnnotation
private Object obj = new Object();

@Test
public void test() throws Exception {
    assertEquals(1, obj.getClass().getAnnotations().length);
}

导致:

java.lang.AssertionError: 
Expected :1
Actual   :0

2 个答案:

答案 0 :(得分:2)

您已将注释添加到班级中的Field而不是Object班级。尝试

Field field = getClass().getDeclaredField("obj");
MyAnnotation ma = field.getAnnotation(MyAnnotation.class);
assertNotNull(ma);
assertEquals(1, field.getAnnotations().length);

答案 1 :(得分:1)

请看How to get annotations of a member variable?

obj.getClass()在您的案例java.lang.Object中返回,但没有任何注释。