public class ClassReader extends ObjectSE
ClassVisitor に既存のクラスを訪問させる Java クラスパーサー。このクラスは、Java クラスファイル形式に準拠したバイト配列を解析し、発生したフィールド、メソッド、バイトコード命令ごとに、特定のクラスビジターの適切なビジットメソッドを呼び出します。| 修飾子と型 | フィールドと説明 |
|---|---|
byte[] | b 解析されるクラス。 |
static int | EXPAND_FRAMES スタックマップフレームを展開するフラグ。 |
int | headerb のクラスヘッダー情報(アクセス、名前...)の開始インデックス。 |
static int | SKIP_CODE メソッドコードをスキップするフラグ。 |
static int | SKIP_DEBUG クラスのデバッグ情報をスキップするフラグ。 |
static int | SKIP_FRAMES クラス内のスタックマップフレームをスキップするためのフラグ。 |
| コンストラクターと説明 |
|---|
ClassReader(byte[] b) 新しい ClassReader オブジェクトを構築します。 |
ClassReader(byte[] b, int off, int len) 新しい ClassReader オブジェクトを構築します。 |
ClassReader(InputStreamSE is) 新しい ClassReader オブジェクトを構築します。 |
ClassReader(StringSE name) 新しい ClassReader オブジェクトを構築します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | accept(ClassVisitor classVisitor, Attribute[] attrs, int flags) 指定されたビジターをこの ClassReader の Java クラスに訪問させます。 |
void | accept(ClassVisitor classVisitor, int flags) 指定されたビジターをこの ClassReader の Java クラスに訪問させます。 |
int | getAccess() クラスのアクセスフラグを返します( Opcodes を参照)。 |
StringSE | getClassName() クラスの内部名を返します( getInternalName を参照)。 |
StringSE[] | getInterfaces() クラスのインターフェースの内部名を返します( getInternalName を参照)。 |
int | getItem(int item)b の定数プール項目の開始インデックスに 1 を加えた値を返します。 |
int | getItemCount()b の定数プール項目の数を返します。 |
int | getMaxStringLength() クラスの定数プールに含まれる文字列の最大長を返します。 |
StringSE | getSuperName() スーパークラスの内部名を返します( getInternalName を参照)。 |
int | readByte(int index)b のバイト値を読み取ります。 |
StringSE | readClass(int index, char[] buf)b のクラス定数プール項目を読み取ります。 |
ObjectSE | readConst(int item, char[] buf)b の数値または文字列定数プール項目を読み取ります。 |
int | readInt(int index)b の signed int 値を読み取ります。 |
protected Label | readLabel(int offset, Label[] labels) 指定されたオフセットに対応するラベルを返します。 |
long | readLong(int index)b の符号付き long 値を読み取ります。 |
StringSE | readModule(int index, char[] buf)b のモジュール定数プール項目を読み取ります。 |
StringSE | readPackage(int index, char[] buf)b のモジュール定数プール項目を読み取ります。 |
short | readShort(int index)b の符号付き short 値を読み取ります。 |
int | readUnsignedShort(int index)b の符号なし short 値を読み取ります。 |
StringSE | readUTF8(int index, char[] buf)b の UTF8 文字列定数プール項目を読み取ります。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final int SKIP_CODE
CODE 属性は訪問されません。これは、たとえば、メソッドおよびメソッドパラメーターのアノテーションを取得するために使用できます。public static final int SKIP_DEBUG
visitLocalVariable および visitLineNumber メソッドは呼び出されません。public static final int SKIP_FRAMES
visitFrame メソッドは呼び出されません。このフラグは、ClassWriter.COMPUTE_FRAMES オプションが使用されている場合に役立ちます。このフラグは、クラスライターで無視され、最初から再計算されるフレームを回避します。public static final int EXPAND_FRAMES
public final byte[] b
Attribute サブクラスを対象としており、通常、クラスジェネレーターやアダプターでは必要ありません。public final int header
b のクラスヘッダー情報(アクセス、名前...)の開始インデックス。public ClassReader(byte[] b)
ClassReader オブジェクトを構築します。b - 読み込まれるクラスのバイトコード public ClassReader(byte[] b,
int off,
int len)ClassReader オブジェクトを構築します。b - 読み込まれるクラスのバイトコード off - クラスデータの開始オフセット。len - クラスデータの長さ。public ClassReader(InputStreamSE is) throws IOExceptionSE
ClassReader オブジェクトを構築します。is - クラスを読み取る入力ストリーム IOExceptionSE - 読み込み中に問題が発生した場合。public ClassReader(StringSE name) throws IOExceptionSE
ClassReader オブジェクトを構築します。name - 読み取るクラスのバイナリ修飾名。IOExceptionSE - 読み取り中に例外が発生した場合。public int getAccess()
Opcodes を参照)。バイトコードが 1.5 の前にあり、これらのフラグが属性で表されている場合、この値は非推奨フラグと合成フラグを反映しない場合があります。ClassVisitor.visit(int, int, String, String, String, String[])public StringSE getClassName()
getInternalName を参照)。ClassVisitor.visit(int, int, String, String, String, String[])public StringSE getSuperName()
getInternalName を参照)。インターフェースの場合、スーパークラスは ObjectSE です。ObjectSE クラスの場合は null 。ClassVisitor.visit(int, int, String, String, String, String[])public StringSE[] getInterfaces()
getInternalName を参照)。ClassVisitor.visit(int, int, String, String, String, String[])public void accept(ClassVisitor classVisitor, int flags)
ClassReader の Java クラスに訪問させます。このクラスは、コンストラクターで指定されたクラスです(ClassReader を参照)。classVisitor - このクラスを訪問しなければならない訪問者。flags - このクラスのデフォルトの動作を変更するために使用できるオプションフラグ。SKIP_DEBUG、EXPAND_FRAMES、SKIP_FRAMES、SKIP_CODE を参照してください。public void accept(ClassVisitor classVisitor, Attribute[] attrs, int flags)
ClassReader の Java クラスに訪問させます。このクラスは、コンストラクターで指定されたクラスです(ClassReader を参照)。classVisitor - このクラスを訪問しなければならない訪問者。attrs - クラスの訪問中に解析する必要がある属性のプロトタイプ。型がプロトタイプの型と等しくない属性は解析されません。そのバイト配列値は変更されずに ClassWriter に渡されます。 この値に定数プールへの参照が含まれている場合、またはリーダーとライター間のクラスアダプターによって変換されたクラス要素との構文リンクまたはセマンティックリンクがある場合、これにより破損する可能性があります。flags - このクラスのデフォルトの動作を変更するために使用できるオプションフラグ。SKIP_DEBUG、EXPAND_FRAMES、SKIP_FRAMES、SKIP_CODE を参照してください。protected Label readLabel(int offset, Label[] labels)
offset - メソッド内のバイトコードオフセット。labels - オフセットでインデックス付けされた、作成済みのラベル。オフセット用のラベルがすでに存在する場合、このメソッドは新しいラベルを作成してはなりません。それ以外の場合は、この配列に新しいラベルを格納する必要があります。public int getItem(int item)
item - インデックスは定数プールアイテムです。b の定数プール項目の開始インデックスに 1 を加えたもの。public int getMaxStringLength()
public int readByte(int index)
index - b で読み取られる値の開始インデックス。public int readUnsignedShort(int index)
index - b で読み取られる値の開始インデックス。public short readShort(int index)
index - b で読み取られる値の開始インデックス。public int readInt(int index)
index - b で読み取られる値の開始インデックス。public long readLong(int index)
index - b で読み取られる値の開始インデックス。public StringSE readUTF8(int index, char[] buf)
index - b の符号なしショート値の開始インデックス。その値は UTF8 定数プール項目のインデックスです。buf - アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public StringSE readClass(int index, char[] buf)
index - b の unsignedshort 値の開始インデックス。その値は、クラス定数プール項目のインデックスです。buf - アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public StringSE readModule(int index, char[] buf)
index - b の unsignedshort 値の開始インデックス。この値は、モジュール定数プール項目のインデックスです。buf - アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public StringSE readPackage(int index, char[] buf)
index - b の unsignedshort 値の開始インデックス。この値は、モジュール定数プール項目のインデックスです。buf - アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。