インタフェースConstantPoolBuilder

すべてのスーパー・インタフェース:
ConstantPool, Iterable<PoolEntry>

public sealed interface ConstantPoolBuilder extends ConstantPool
classファイルの定数プールのビルダー。 「構築中」である定数プールへの読み取りおよび書き込みアクセスを提供します。 書込みは、追加のみの(新しいエントリのインデックスが単調に増加)およびべき等な(entry-bearingメソッドは、適切なエントリがある場合、既存のエントリを返します)です。

classファイル構築の場合、ClassFile::buildのオーバーロードはConstantPoolBuilderを取ります。 ClassFile::transformClassによるclassファイル変換の場合、ClassFile.ConstantPoolSharingOptionは、結果として生成されるclassの定数プール・ビルダーの作成方法を制御します。

エイリアン定数プール・エントリ

classファイル構築および定数プール構築では、アクティブなクラス・ファイル・ビルダーのこの定数プール・ビルダーに対して、一部の定数プール・エントリがalienになる場合があります。 たとえば、classEntry(Utf8Entry)は、エイリアンのUTF8エントリを使用してコールできます。 別名エントリは、この定数プール・ビルダーのプール・エントリに変換され、同等のエントリを再利用したり、存在しない場合は新しいエントリを追加します。 その結果、この定数プール・ビルダーのエントリ・ベアリング・メソッドによって返されるすべてのプール・エントリは、この定数プールに属します。

一部のClassFileBuilderメソッドでは、「定数のプール」以外のプール・エントリを受信した場合に、それらの出力が調整される場合があります。 たとえば、エイリアン・エントリを含むldc_w命令がCodeBuilderに書き込まれると、変換されたエントリをそのような命令でエンコードできる場合、CodeBuilderは機能的に同等のldc命令をかわりに発行できます。

生成されたclassファイルの正確性など、エイリアン定数プール・エントリの変換を回避するために、ユーザーは、 ClassFileBuilderに関連付けられた定数プールの定数プール・ビルダー・エントリ・ベアリング・メソッドをコールして取得した定数プール・エントリを常に提供できます。 それ以外の場合、変換は生成されたclassファイルの動作に影響を与えません。

導入されたバージョン:
24
関連項目: