2014-10-16 79 views
0

我想要使用反射,用@Override註釋(或任何註釋)註釋的'init'方法,但確定,繼承我的示例,很簡化,課程 基類:Gettining使用反射的Java註釋

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()給了我相同的結果

回答