2012-03-02 78 views
1

我正在爲使用ASM的Java類文件編寫分析器。我想確定的一件事是類中字段的修飾符(public,static,final?)是什麼。但我不知道如何做到這一點。使用ASM樹獲取字段的修飾符API

在文檔中我找到了修飾符的操作碼,這似乎與FieldNode類的acces值相關聯。但我不明白我是如何從這個值派生出字段的修飾符的。

有什麼建議嗎?

回答

4

訪問成員變量是一個位域,每個位的位置對應一個特定的訪問修飾符。要檢查一點,你必須使用Opcodes中的常量和一個二進制AND並檢查結果是否不爲零。例如:

boolean isPublic = (node.access & Opcodes.ACC_PUBLIC) != 0; 
boolean isStatic = (node.access & Opcodes.ACC_STATIC) != 0; 
+1

它的工作原理。謝謝! – TheArchitect 2012-03-02 15:22:03