0
我試圖從Android Sdk 19和jdk 1.7中的Method類中獲取註釋字段。但是下面的代碼拋出了NoSuchFieldException。但是我可以在Method.java文件中找到確切的字段。從方法類中獲取註釋字段
Field field = Method.class.getDeclaredField("annotations");
我試圖從Android Sdk 19和jdk 1.7中的Method類中獲取註釋字段。但是下面的代碼拋出了NoSuchFieldException。但是我可以在Method.java文件中找到確切的字段。從方法類中獲取註釋字段
Field field = Method.class.getDeclaredField("annotations");
您無法讀取該領域的原因,而是private
,爲了避開它,你必須讓它進入第一:
Field f = Method.class.getDeclaredField("annotations");
f.setAccessible(true);
System.out.println("f = " + f);
如果看到Method.java文件,「註釋」是一個byte []類型的字段。我很困惑,爲什麼我無法取回它。準確地說,我正在嘗試一種黑客行爲,試圖在運行時獲取此字段並更新方法的註釋。 Method.class.getAnnotations()只會讓你知道註釋列表,而不會更新它們。 – 1987frank 2014-10-10 14:40:44
@ 1987frank我的壞 - 我以爲你想要得到課堂的註釋。你不能領域,因爲它是'私人'。但你可以繞過它 - 看到更新的答案。 – alfasin 2014-10-10 20:22:49
我不認爲這與您提到的問題有關。在「Field f = Method.class.getDeclaredField(」annotations「);」行處引發異常。 – 1987frank 2014-10-13 03:17:49