【发布时间】:2014-10-16 14:03:56
【问题描述】:
我正在尝试使用反射来发现使用@Override 注释(或任何注释)注释的“init”方法,但是好的,这是我的示例,当然要简化很多 基类:
public abstract class A
{
public void init()
{
}
}
然后这里是子类:
public class B extends A
{
String bla;
@Override
public void init()
{
}
public void init(String bla)
{
this.bla=bla;
}
}
所以我运行来获取带注释的方法的代码是这样的:
public static void main(String[] args)
{
ClassLoader c = Main.class.getClassLoader();
try
{
Class<?> clazz = c.loadClass("correct.path.to.class.B");
for (Method method : clazz.getDeclaredMethods())
{
if (method.getName().equals("init"))
{
System.out.println(method.getDeclaredAnnotations().length);
}
}
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
这两种方法都正确找到了,但令人惊讶的是,在读取包含注释的数组的长度时,我得到了两次“0”,知道这里有什么问题吗?
方法getAnnotation() 给了我同样的结果
【问题讨论】:
标签: java reflection annotations