1

ASM を使用して Java クラス ファイルのアナライザーを作成しています。私が決定したいことの 1 つは、クラス内のフィールドの修飾子 (public、static、final?) が何であるかです。しかし、これを行う方法がわかりません。

ドキュメントで、修飾子のオペコードを見つけました。これは、FieldNode クラスの acces 値と相関しているようです。しかし、この値からフィールドの修飾子を導出する方法がわかりません。

助言がありますか?

4

1 に答える 1

4

アクセスメンバー変数はビットフィールドで、各ビット位置は特定のアクセス修飾子に対応します。ビットをチェックするには、定数 from でバイナリ AND を使用しOpcodes、結果がゼロでないかどうかをチェックする必要があります。例えば:

boolean isPublic = (node.access & Opcodes.ACC_PUBLIC) != 0;
boolean isStatic = (node.access & Opcodes.ACC_STATIC) != 0;
于 2012-03-02T14:50:43.540 に答える