根据doc http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Method.html#getDeclaredAnnotations%28%29并对此answer https://stackoverflow.com/questions/6460980/what-does-the-getdeclaredxyz-stands-for-in-java-reflect-package/6461010#6461010我应该在以下代码中使用“Override”(或类似的内容):
import java.lang.reflect.*;
import java.util.*;
import static java.lang.System.out;
class Test {
@Override
public String toString() {
return "";
}
public static void main( String ... args ) {
for( Method m : Test.class.getDeclaredMethods() ) {
out.println( m.getName() + " " + Arrays.toString( m.getDeclaredAnnotations()));
}
}
}
但是,我得到一个空数组。
$ java Test
main []
toString []
我缺少什么?
因为@Override http://download.oracle.com/javase/6/docs/api/java/lang/Override.html注释有Retention=SOURCE
,即它没有编译到类文件中,因此在运行时无法通过反射获得。它仅在编译期间有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)