2012-03-02 12 views
1

ASMを使用してJavaクラスファイルのアナライザを作成しています。私が決定したいことの1つは、クラス内のフィールドの修飾子(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

関連する問題