インタフェース・ラベル
public sealed interface Label
メソッド本文の命令内の位置のマーカー。 この位置は、
ListIterator
の位置と同様に、命令のリスト内のカーソル位置です。
ラベルの読み込み
class
ファイルから読み取られるラベルは、Code
属性のcode
配列内の位置を表します。 これは、bci (バイトコード・インデックス) (pc (プログラム・カウンタ)とも呼ばれる)に関連付けられ、code
配列への索引です。実際のカーソル位置は指定された索引の直前であるため、命令の先頭のラベルはbci 0
、命令の末尾のラベルはbci codeLength() + 1
になります。 bciはCodeAttribute::labelToBci
を介して検査できます。
汎用CodeModel
sでは、ラベルにbci値がない場合があります。ラベルの位置は、そのモデル内の対応するLabelTarget
を検索することで確認できます。
ラベルの記述
java.lang.classfile
の多くのモデルはラベルを参照します。 ラベルを記述するには、ラベルを取得する必要があります。ラベルはCodeBuilder
にバインドする必要があります。
ラベルを取得するには:
- 他のモデルから読み取られたラベルを使用します。
CodeBuilder
の事前定義済ラベル(CodeBuilder::startLabel
、CodeBuilder::endLabel
、BlockCodeBuilder::breakLabel
など)を使用します。 彼らはすでに縛られています。CodeBuilder::newLabel
またはCodeBuilder::newBoundLabel
を使用してラベルを作成します。
ラベルは、使用されるCodeBuilder
で1回のみバインドする必要があります。そうしないと、書込みは失敗します。 バインドされていないラベルをバインドするには:
- 読取り
LabelTarget
をCodeBuilder
に送信します。 CodeBuilder::labelBinding
を使用します。
CodeBuilder
では自動的にバインドされません。これらは別個のエンティティであり、ラベルはその中の異なる位置にバインドされます。- 導入されたバージョン:
- 24
- 関連項目: