インタフェース・ラベル
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
- 関連項目: