Searchable.java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Searchable { }
Run Code Online (Sandbox Code Playgroud)
Obj.java
public class Obj {
@Searchable
String myField;
}
Run Code Online (Sandbox Code Playgroud)
void main(String [] args)
Annotation[] annotations = Obj.class.getDeclaredField("myField").getAnnotations();
Run Code Online (Sandbox Code Playgroud)
我希望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;
}
Run Code Online (Sandbox Code Playgroud)
我运行它,它产生以下输出:
@nl.jworks.stackoverflow.Searchable()
Run Code Online (Sandbox Code Playgroud)
你能尝试在IDE中运行上面的类吗?我用IntelliJ,openjdk-6试了一下.
| 归档时间: |
|
| 查看次数: |
11456 次 |
| 最近记录: |