public class ClassReader extends ObjectSE
ClassVisitor
に ClassFile 構造を訪問させるパーサー。このクラスは、ClassFile コンテンツを解析し、発生したフィールド、メソッド、バイトコード命令ごとに、指定された ClassVisitor
の適切な訪問メソッドを呼び出します。修飾子と型 | フィールドと説明 |
---|---|
byte[] | b 使用すべきではありません。 代わりに readByte(int) および他の読み取り方法を使用してください。このフィールドは最終的に削除されます。 |
static int | EXPAND_FRAMES スタックマップフレームを展開するフラグ。 |
int | header ClassFile の access_flags フィールドのバイト単位のオフセット。 |
static int | SKIP_CODE コード属性をスキップするためのフラグ。 |
static int | SKIP_DEBUG SourceFile、SourceDebugExtension、LocalVariableTable、LocalVariableTypeTable、LineNumberTable、MethodParameters 属性をスキップするためのフラグ。 |
static int | SKIP_FRAMES StackMap および StackMapTable 属性をスキップするためのフラグ。 |
コンストラクターと説明 |
---|
ClassReader(byte[] classFile) 新しい ClassReader オブジェクトを構築します。 |
ClassReader(byte[] classFileBuffer, int classFileOffset, int classFileLength) 新しい ClassReader オブジェクトを構築します。 |
ClassReader(InputStreamSE inputStream) 新しい ClassReader オブジェクトを構築します。 |
ClassReader(StringSE className) 新しい ClassReader オブジェクトを構築します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | accept(ClassVisitor classVisitor, Attribute[] attributePrototypes, int parsingOptions) この ClassReader のコンストラクターに渡された JVMS ClassFile 構造体を、指定された訪問者に訪問させます。 |
void | accept(ClassVisitor classVisitor, int parsingOptions) この ClassReader のコンストラクターに渡された JVMS ClassFile 構造体を、指定された訪問者に訪問させます。 |
int | getAccess() クラスのアクセスフラグを返します( Opcodes を参照)。 |
StringSE | getClassName() クラスの内部名を返します( Type.getInternalName() を参照)。 |
StringSE[] | getInterfaces() 実装されたインターフェースの内部名を返します( Type.getInternalName() を参照)。 |
int | getItem(int constantPoolEntryIndex) この ClassReader の JVMS 'cp_info' 構造の開始オフセットを返します(つまり |
int | getItemCount() クラスの定数プールテーブルのエントリ数を返します。 |
int | getMaxStringLength() クラスの定数プールテーブルに含まれる文字列の最大長の控えめな見積もりを返します。 |
StringSE | getSuperName() スーパークラスの内部名を返します( Type.getInternalName() を参照)。 |
int | readByte(int offset) この ClassReader のバイト値を読み取ります。 |
StringSE | readClass(int offset, char[] charBuffer) この ClassReader の CONSTANT_Class 定数プールエントリを読み取ります。 |
ObjectSE | readConst(int constantPoolEntryIndex, char[] charBuffer) この ClassReader の数値または文字列定数プールエントリを読み取ります。 |
int | readInt(int offset) この ClassReader の signed int 値を読み取ります。 |
protected Label | readLabel(int bytecodeOffset, Label[] labels) 指定されたバイトコードオフセットに対応するラベルを返します。 |
long | readLong(int offset) この ClassReader の符号付き long 値を読み取ります。 |
StringSE | readModule(int offset, char[] charBuffer) この ClassReader の CONSTANT_Module 定数プールエントリを読み取ります。 |
StringSE | readPackage(int offset, char[] charBuffer) この ClassReader の CONSTANT_Package 定数プールエントリを読み取ります。 |
short | readShort(int offset) この ClassReader の符号付き short 値を読み取ります。 |
int | readUnsignedShort(int offset) この ClassReader の符号なし short 値を読み取ります。 |
StringSE | readUTF8(int offset, char[] charBuffer) この ClassReader の CONSTANT_Utf8 定数プールエントリを読み取ります。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final int SKIP_CODE
public static final int SKIP_DEBUG
ClassVisitor.visitSource(java.lang.String, java.lang.String)
、MethodVisitor.visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.springframework.asm.Label, org.springframework.asm.Label, int)
、MethodVisitor.visitLineNumber(int, org.springframework.asm.Label)
、MethodVisitor.visitParameter(java.lang.String, int)
は呼び出されません)。public static final int SKIP_FRAMES
MethodVisitor.visitFrame(int, int, java.lang.Object[], int, java.lang.Object[])
は呼び出されません)。このフラグは、ClassWriter.COMPUTE_FRAMES
オプションが使用されている場合に役立ちます。無視されて最初から再計算されるフレームにアクセスするのを回避します。public static final int EXPAND_FRAMES
@DeprecatedSE public final byte[] b
readByte(int)
と他の読み取りメソッドを使用してください。このフィールドは最終的に削除されます。public final int header
public ClassReader(byte[] classFile)
ClassReader
オブジェクトを構築します。classFile
- 読み取る JVMS ClassFile 構造。public ClassReader(byte[] classFileBuffer, int classFileOffset, int classFileLength)
ClassReader
オブジェクトを構築します。classFileBuffer
- 読み取る JVMS ClassFile 構造を含むバイト配列。classFileOffset
- 読み取られる ClassFile の最初のバイトの byteBuffer 内のオフセット。classFileLength
- 読み取る ClassFile の長さ(バイト)。public ClassReader(InputStreamSE inputStream) throws IOExceptionSE
ClassReader
オブジェクトを構築します。inputStream
- 読み取る JVMS ClassFile 構造の入力ストリームこの入力ストリームには、ClassFile 構造自体のみを含める必要があります。現在の位置から最後まで読み取られます。IOExceptionSE
- 読み込み中に問題が発生した場合。public ClassReader(StringSE className) throws IOExceptionSE
ClassReader
オブジェクトを構築します。className
- 読み取るクラスの完全修飾名。ClassFile 構造は、現在のクラスローダーの ClassLoader.getSystemResourceAsStream(java.lang.String)
SE で取得されます。IOExceptionSE
- 読み取り中に例外が発生した場合。public int getAccess()
Opcodes
を参照)。バイトコードが 1.5 の前にあり、これらのフラグが属性で表されている場合、この値は非推奨フラグと合成フラグを反映しない場合があります。ClassVisitor.visit(int, int, String, String, String, String[])
public StringSE getClassName()
Type.getInternalName()
を参照)。ClassVisitor.visit(int, int, String, String, String, String[])
public StringSE getSuperName()
Type.getInternalName()
を参照)。インターフェースの場合、スーパークラスは Object
SE です。Object
SE クラスの場合は null。ClassVisitor.visit(int, int, String, String, String, String[])
public StringSE[] getInterfaces()
Type.getInternalName()
を参照)。ClassVisitor.visit(int, int, String, String, String, String[])
public void accept(ClassVisitor classVisitor, int parsingOptions)
ClassReader
のコンストラクターに渡された JVMS ClassFile 構造体を、指定された訪問者に訪問させます。classVisitor
- このクラスを訪問しなければならない訪問者。parsingOptions
- このクラスの解析に使用するオプション。SKIP_CODE
、SKIP_DEBUG
、SKIP_FRAMES
または EXPAND_FRAMES
の 1 つ以上。public void accept(ClassVisitor classVisitor, Attribute[] attributePrototypes, int parsingOptions)
ClassReader
のコンストラクターに渡された JVMS ClassFile 構造体を、指定された訪問者に訪問させます。classVisitor
- このクラスを訪問しなければならない訪問者。attributePrototypes
- クラスの訪問中に解析する必要がある属性のプロトタイプ。型がプロトタイプの型と等しくない属性は解析されません。そのバイト配列値は変更されずに ClassWriter に渡されます。 この値に定数プールへの参照が含まれている場合、またはリーダーとライター間のクラスアダプターによって変換されたクラス要素との構文リンクまたはセマンティックリンクがある場合、これにより破損する可能性があります。parsingOptions
- このクラスの解析に使用するオプション。SKIP_CODE
、SKIP_DEBUG
、SKIP_FRAMES
または EXPAND_FRAMES
の 1 つ以上。protected Label readLabel(int bytecodeOffset, Label[] labels)
bytecodeOffset
- メソッド内のバイトコードオフセット。labels
- すでに作成されたラベル。オフセットでインデックス付けされます。bytecodeOffset のラベルがすでに存在する場合、このメソッドは新しいラベルを作成してはいけません。それ以外の場合は、新しいラベルをこの配列に格納する必要があります。public int getItemCount()
public int getItem(int constantPoolEntryIndex)
ClassReader
の JVMS 'cp_info' 構造(つまり、定数プールエントリ)の開始オフセットに 1 を加えた値を返します。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターやアダプターでは必要ありません。constantPoolEntryIndex
- クラスの定数プールテーブルの定数プールエントリのインデックス。ClassReader
の開始オフセット + 1public int getMaxStringLength()
public int readByte(int offset)
ClassReader
のバイト値を読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターやアダプターでは必要ありません。offset
- この ClassReader
で読み取る値の開始オフセット public int readUnsignedShort(int offset)
ClassReader
の符号なし short 値を読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターやアダプターでは必要ありません。offset
- この ClassReader
で読み取られる値の開始インデックス public short readShort(int offset)
ClassReader
の符号付き short 値を読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターやアダプターでは必要ありません。offset
- この ClassReader
で読み取る値の開始オフセット public int readInt(int offset)
ClassReader
の signedint 値を読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。offset
- この ClassReader
で読み取る値の開始オフセット public long readLong(int offset)
ClassReader
の符号付き long 値を読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。offset
- この ClassReader
で読み取る値の開始オフセット public StringSE readUTF8(int offset, char[] charBuffer)
ClassReader
の CONSTANT_Utf8 定数プールエントリを読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。offset
- この ClassReader
の符号なしショート値の開始オフセット。この値は、クラスの定数プールテーブルの CONSTANT_Utf8 エントリのインデックスです。charBuffer
- 文字列の読み取りに使用されるバッファ。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public StringSE readClass(int offset, char[] charBuffer)
ClassReader
の CONSTANT_Class 定数プールエントリを読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。offset
- この ClassReader
の符号なしショート値の開始オフセット。この値は、クラスの定数プールテーブルの CONSTANT_Class エントリのインデックスです。charBuffer
- アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public StringSE readModule(int offset, char[] charBuffer)
ClassReader
の CONSTANT_Module 定数プールエントリを読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。offset
- この ClassReader
の符号なしショート値の開始オフセット。この値は、クラスの定数プールテーブルの CONSTANT_Module エントリのインデックスです。charBuffer
- アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public StringSE readPackage(int offset, char[] charBuffer)
ClassReader
の CONSTANT_Package 定数プールエントリを読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。offset
- この ClassReader
の符号なしショート値の開始オフセット。この値は、クラスの定数プールテーブルの CONSTANT_Package エントリのインデックスです。charBuffer
- アイテムの読み取りに使用されるバッファー。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。public ObjectSE readConst(int constantPoolEntryIndex, char[] charBuffer)
ClassReader
の数値または文字列定数プールエントリを読み取ります。 このメソッドは Attribute
サブクラスを対象としており、通常、クラスジェネレーターまたはアダプターには必要ありません。constantPoolEntryIndex
- クラスの定数プール内の CONSTANT_Integer、CONSTANT_Float、CONSTANT_Long、CONSTANT_Double、CONSTANT_Class、CONSTANT_String、CONSTANT_MethodType、CONSTANT_MethodHandle、CONSTANT_Dynamic エントリのインデックス。charBuffer
- 文字列の読み取りに使用されるバッファ。このバッファは十分に大きくなければなりません。自動的にサイズ変更されることはありません。Integer
SE、Float
SE、Long
SE、Double
SE、String
SE、Type
、Handle
、ConstantDynamic
。