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()
給了我相同的結果
所以沒有辦法,我得在運行時的信息......? – JBoy 2014-10-16 15:11:20
從文檔:'SOURCE註釋將被編譯器丟棄。' – blank 2014-10-16 15:28:17