2014-10-10 118 views
0

我試圖從Android Sdk 19和jdk 1.7中的Method類中獲取註釋字段。但是下面的代碼拋出了NoSuchFieldException。但是我可以在Method.java文件中找到確切的字段。從方法類中獲取註釋字段

Field field = Method.class.getDeclaredField("annotations"); 

回答

0

您無法讀取該領域的原因,而是private,爲了避開它,你必須讓它進入第一:

Field f = Method.class.getDeclaredField("annotations"); 
    f.setAccessible(true); 
    System.out.println("f = " + f); 
+0

如果看到Method.java文件,「註釋」是一個byte []類型的字段。我很困惑,爲什麼我無法取回它。準確地說,我正在嘗試一種黑客行爲,試圖在運行時獲取此字段並更新方法的註釋。 Method.class.getAnnotations()只會讓你知道註釋列表,而不會更新它們。 – 1987frank 2014-10-10 14:40:44

+0

@ 1987frank我的壞 - 我以爲你想要得到課堂的註釋。你不能領域,因爲它是'私人'。但你可以繞過它 - 看到更新的答案。 – alfasin 2014-10-10 20:22:49

+0

我不認爲這與您提到的問題有關。在「Field f = Method.class.getDeclaredField(」annotations「);」行處引發異常。 – 1987frank 2014-10-13 03:17:49