Searchable.java

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

Obj.java
public class Obj {
    @Searchable
    String myField;
}

void main(String [] args)
Annotation[] annotations = Obj.class.getDeclaredField("myField").getAnnotations();

我希望annotations包含我的@Searchable。虽然是null。根据文档,此方法:



(对我而言)这更奇怪,因为它返回null而不是Annotation[0]

我在这里做错了,更重要的是,我将如何获得Annotation

最佳答案

我刚刚为您测试过,它就可以了:

public class StackOverflowTest {

    @Test
    public void testName() throws Exception {

        Annotation[] annotations = Obj.class.getDeclaredField("myField").getAnnotations();

        System.out.println(annotations[0]);
    }
}

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Searchable {

}

class Obj {

    @Searchable
    String myField;
}

我运行它,它产生以下输出:
@nl.jworks.stackoverflow.Searchable()

您可以尝试在IDE中运行上述类吗?我在IntelliJ,openjdk-6上尝试过。

07-26 00:23