パッケージ org.springframework.asm
クラス Attribute
java.lang.ObjectSE
org.springframework.asm.Attribute
Java Virtual Machine Specification(JVMS)で定義されている非標準のクラス、フィールド、メソッド、コード属性。
- 作成者:
- Eric Bruneton, Eugene Kuleshov
- 関連事項:
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected Label[]
使用すべきではありません。ASM では使用されなくなりました。boolean
この型の属性が Code 属性の場合、true を返します。boolean
この型の属性が不明な場合は true を返します。static Attribute
read
(Attribute attribute, ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels) 指定された属性と同じtype
を持つ属性を読み取ります。protected Attribute
read
(ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels) type
属性を読み取ります。static Label
readLabel
(ClassReader classReader, int bytecodeOffset, Label[] labels) ClassReader.readLabel(int, org.springframework.asm.Label[])
を呼び出して、指定されたバイトコードオフセットに対応するラベルを返します。static byte[]
write
(Attribute attribute, ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) 指定された属性のコンテンツのバイト配列形式を返します。protected ByteVector
write
(ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) この属性のコンテンツのバイト配列形式を返します。
フィールドの詳細
type
この属性の型。JVMS では名前とも呼ばれます。
コンストラクターの詳細
Attribute
新しい空の属性を作成します。- パラメーター:
type
- 属性の型。
メソッドの詳細
isUnknown
public boolean isUnknown()この型の属性が不明な場合は true を返します。つまり、属性のコンテンツを解析して定数プールの参照やラベルなどを抽出することはできません。代わりに、属性のコンテンツは不透明なバイト配列として読み取られ、そのまま書き込まれます。これにより、コンテンツに定数プールの参照、ラベル、定数プール、メソッドのバイトコードなどが変更されたときに更新が必要なその他のシンボリック参照がコンテンツに実際に含まれている場合、属性が無効になる可能性があります。このメソッドのデフォルトの実装は常に本当。- 戻り値:
- この型の属性が不明な場合は true。
isCodeAttribute
public boolean isCodeAttribute()この型の属性が Code 属性の場合、true を返します。- 戻り値:
- この型の属性がコード属性の場合は true。
getLabels
使用すべきではありません。ASM では使用されなくなりました。この属性に対応するラベルを返します。- 戻り値:
- この属性に対応するラベル。この属性がラベルを含むコード属性でない場合は null。
read
protected Attribute read(ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels) type
属性を読み取ります。このメソッドは、指定された ClassReader の「オフセット」で始まる「長さ」バイトに対応する、型type
の新しいAttribute
オブジェクトを返す必要があります。- パラメーター:
classReader
- 読み取る属性を含むクラス。offset
-ClassReader
内の属性のコンテンツの最初のバイトのインデックス。ここでは、6 つの属性ヘッダーバイト(attribute_name_index および attribute_length)は考慮されません。length
- 属性のコンテンツの長さ(6 つの属性ヘッダーバイトを除く)。charBuffer
- 'charBuffer' パラメーターを必要とする ClassReader メソッドを呼び出すために使用されるバッファ。codeAttributeOffset
-ClassReader
で囲む Code 属性のコンテンツの最初のバイトのインデックス。読み取られる属性が Code 属性でない場合は -1。ここでは、6 つの属性ヘッダーバイト(attribute_name_index および attribute_length)は考慮されていません。labels
- メソッドのコードのラベル、または読み取る属性がコード属性でない場合は null。属性で定義されたラベルは、まだ存在しない場合は、readLabel(org.springframework.asm.ClassReader, int, org.springframework.asm.Label[])
メソッドを呼び出して作成し、この配列に追加する必要があります (Label
インスタンスを直接作成しないでください)。- 戻り値:
- 指定されたバイトに対応する新しい
Attribute
オブジェクト
read
public static Attribute read(Attribute attribute, ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels) 指定された属性と同じtype
を持つ属性を読み取ります。このメソッドは、指定された ClassReader 内の「オフセット」から始まる「長さ」バイトに対応する新しいAttribute
オブジェクトを返します。- パラメーター:
attribute
- 読み取りに使用される属性プロトタイプ。classReader
- 読み取る属性を含むクラス。offset
-ClassReader
内の属性のコンテンツの最初のバイトのインデックス。ここでは、6 つの属性ヘッダーバイト(attribute_name_index および attribute_length)は考慮されません。length
- 属性のコンテンツの長さ(6 つの属性ヘッダーバイトを除く)。charBuffer
- 'charBuffer' パラメーターを必要とする ClassReader メソッドを呼び出すために使用されるバッファ。codeAttributeOffset
-ClassReader
で囲む Code 属性のコンテンツの最初のバイトのインデックス。読み取られる属性が Code 属性でない場合は -1。ここでは、6 つの属性ヘッダーバイト(attribute_name_index および attribute_length)は考慮されていません。labels
- メソッドのコードのラベル、または読み取る属性がコード属性でない場合は null。属性で定義されたラベルは、まだ存在しない場合はこの配列に追加されます。- 戻り値:
- 指定されたバイトに対応する新しい
Attribute
オブジェクト。
readLabel
ClassReader.readLabel(int, org.springframework.asm.Label[])
を呼び出して、指定されたバイトコードオフセットに対応するラベルを返します。これにより、ラベルがまだ存在しない場合は、指定された配列にラベルが作成されて追加されます。指定された ClassReader がClassReader.readLabel(int, org.springframework.asm.Label[])
をオーバーライドする場合、作成されたこのラベルはLabel
サブクラスインスタンスになる可能性があることに注意してください。read(ClassReader, int, int, char[], int, Label[])
は手動でLabel
インスタンスを作成してはなりません。- パラメーター:
bytecodeOffset
- メソッド内のバイトコードオフセット。labels
- すでに作成されたラベル。オフセットでインデックス付けされます。bytecodeOffset のラベルがすでに存在する場合、このメソッドは新しいラベルを作成しません。それ以外の場合は、新しいラベルをこの配列に格納します。- 戻り値:
- 指定されたバイトコードオフセットのラベル。
write
protected ByteVector write(ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) この属性のコンテンツのバイト配列形式を返します。返される ByteVector に 6 ヘッダーバイト(attribute_name_index および attribute_length)を追加しないでください。このメソッドは、この属性のバイナリ形式を計算するために 1 回だけ呼び出されます。属性が最初に書き込まれた後のその後の変更は考慮されません。
- パラメーター:
classWriter
- この属性を追加する必要があるクラス。このパラメーターを使用して、この属性に対応するアイテムをこのクラスの定数プールに追加できます。code
- この Code 属性に対応するメソッドのバイトコード。この属性が Code 属性でない場合は null。Code 属性の "code" フィールドに対応します。codeLength
- このコード属性に対応するメソッドのバイトコードの長さ。この属性がコード属性でない場合は 0。Code 属性の "code_length" フィールドに対応します。maxStack
- この Code 属性に対応するメソッドの最大スタックサイズ。この属性が Code 属性でない場合は -1。maxLocals
- このコード属性に対応するメソッドのローカル変数の最大数。この属性がコード属性でない場合は -1。- 戻り値:
- この属性のバイト配列形式。
write
public static byte[] write(Attribute attribute, ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) 指定された属性のコンテンツのバイト配列形式を返します。返されるバイト配列には、6 つのヘッダーバイト (attribute_name_index と attribute_length) は追加されません。- パラメーター:
attribute
- 書き込むべき属性。classWriter
- この属性を追加する必要があるクラス。このパラメーターを使用して、この属性に対応するアイテムをこのクラスの定数プールに追加できます。code
- この Code 属性に対応するメソッドのバイトコード。この属性が Code 属性でない場合は null。Code 属性の "code" フィールドに対応します。codeLength
- このコード属性に対応するメソッドのバイトコードの長さ。この属性がコード属性でない場合は 0。Code 属性の "code_length" フィールドに対応します。maxStack
- この Code 属性に対応するメソッドの最大スタックサイズ。この属性が Code 属性でない場合は -1。maxLocals
- このコード属性に対応するメソッドのローカル変数の最大数。この属性がコード属性でない場合は -1。- 戻り値:
- この属性のバイト配列形式。