有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用反射获取java注释

我试图使用反射来发现用@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()给出了相同的结果


共 (1) 个答案