パッケージ org.springframework.asm

クラス Attribute

java.lang.ObjectSE
org.springframework.asm.Attribute

public class Attribute extends ObjectSE
Java Virtual Machine Specification(JVMS)で定義されている非標準のクラス、フィールド、メソッド、コード属性。
作成者:
Eric Bruneton, Eugene Kuleshov
関連事項:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    final StringSE
    この属性の型。JVMS では名前とも呼ばれます。
  • コンストラクターの概要

    コンストラクター
    修飾子
    コンストラクター
    説明
    protected
    新しい空の属性を作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    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)
    この属性のコンテンツのバイト配列形式を返します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • type

      public final StringSE type
      この属性の型。JVMS では名前とも呼ばれます。
  • コンストラクターの詳細

    • Attribute

      protected Attribute(StringSE type)
      新しい空の属性を作成します。
      パラメーター:
      type - 属性の型。
  • メソッドの詳細

    • isUnknown

      public boolean isUnknown()
      この型の属性が不明な場合は true を返します。つまり、属性のコンテンツを解析して定数プールの参照やラベルなどを抽出することはできません。代わりに、属性のコンテンツは不透明なバイト配列として読み取られ、そのまま書き込まれます。これにより、コンテンツに定数プールの参照、ラベル、定数プール、メソッドのバイトコードなどが変更されたときに更新が必要なその他のシンボリック参照がコンテンツに実際に含まれている場合、属性が無効になる可能性があります。このメソッドのデフォルトの実装は常に本当。
      戻り値:
      この型の属性が不明な場合は true。
    • isCodeAttribute

      public boolean isCodeAttribute()
      この型の属性が Code 属性の場合、true を返します。
      戻り値:
      この型の属性がコード属性の場合は true。
    • getLabels

      @DeprecatedSE protected Label[] 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

      public static Label readLabel(ClassReader classReader, int bytecodeOffset, Label[] labels)
      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。
      戻り値:
      この属性のバイト配列形式。