インタフェースConstantPoolBuilder
- すべてのスーパー・インタフェース:
ConstantPool,Iterable<PoolEntry>
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
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明bsmEntry(MethodHandleEntry methodReference, List<LoadableConstantEntry> arguments) MethodHandleEntryおよびLoadableConstantEntryのリストを参照するBootstrapMethodEntryを返します。default BootstrapMethodEntrybsmEntry(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) 指定されたブートストラップ・メソッドおよび引数を記述するBootstrapMethodEntryを返します。booleancanWriteDirect(ConstantPool constantPool) 指定された定数プール内のエントリの索引がこのビルダー内の同じエントリを参照している場合、trueを返します。classEntry(Utf8Entry ne) 指定されたUtf8Entryを参照するClassEntryを返します。default ClassEntryclassEntry(ClassDesc classDesc) 指定されたClassDescと同じ参照型を記述するClassEntryを返します。constantDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) BootstrapMethodEntryおよびNameAndTypeEntryを参照するConstantDynamicEntryを返します。default ConstantDynamicEntry指定されたDynamicConstantDescとして動的定数を記述するConstantDynamicEntryを返します。default ConstantValueEntrydoubleEntry(double value) 指定された値を記述するDoubleEntryを返します。fieldRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntryおよびNameAndTypeEntryを参照するFieldRefEntryを返します。default FieldRefEntryfieldRefEntry(ClassDesc owner, String name, ClassDesc type) クラスのフィールドを記述するFieldRefEntryを返します。floatEntry(float value) 指定された値を記述するFloatEntryを返します。intEntry(int value) 指定された値を記述するIntegerEntryを返します。interfaceMethodRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntryおよびNameAndTypeEntryを参照するInterfaceMethodRefEntryを返します。default InterfaceMethodRefEntryinterfaceMethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type) インタフェースのメソッドを記述するInterfaceMethodRefEntryを返します。invokeDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) BootstrapMethodEntryおよびNameAndTypeEntryを参照するInvokeDynamicEntryを返します。default InvokeDynamicEntry指定されたDynamicCallSiteDescと同じ動的コール・サイトを記述するInvokeDynamicEntryを返します。default LoadableConstantEntry指定された定数値を記述するLoadableConstantEntryを返します。longEntry(long value) 指定された値を記述するLongEntryを返します。methodHandleEntry(int refKind, MemberRefEntry reference) 参照の種類をエンコードし、MemberRefEntryを参照するMethodHandleEntryを返します。default MethodHandleEntrymethodHandleEntry(DirectMethodHandleDesc descriptor) 指定されたDirectMethodHandleDescと同じメソッド・ハンドルを記述するMethodHandleEntryを返します。methodRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntryおよびNameAndTypeEntryを参照するMethodRefEntryを返します。default MethodRefEntrymethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type) クラスのメソッドを記述するMethodRefEntryを返します。methodTypeEntry(Utf8Entry descriptor) Utf8Entryを参照するMethodTypeEntryを返します。methodTypeEntry(MethodTypeDesc descriptor) 指定されたMethodTypeDescと同じメソッド型を記述するMethodTypeEntryを返します。moduleEntry(Utf8Entry moduleName) 指定されたUtf8Entryを参照するModuleEntryを返します。default ModuleEntrymoduleEntry(ModuleDesc moduleDesc) 指定されたModuleDescと同じモジュールを記述するModuleEntryを返します。nameAndTypeEntry(Utf8Entry nameEntry, Utf8Entry typeEntry) 指定された名前を参照するNameAndTypeEntryを返し、Utf8Entryと入力します。default NameAndTypeEntrynameAndTypeEntry(String name, ClassDesc type) 指定された修飾されていない名前とフィールド記述子を記述するNameAndTypeEntryを返します。default NameAndTypeEntrynameAndTypeEntry(String name, MethodTypeDesc type) 指定された名前とメソッド記述子を記述するNameAndTypeEntryを返します。static ConstantPoolBuilderof()新しい定数プール・ビルダーを返します。static ConstantPoolBuilderof(ClassModel classModel) 新しい定数プール・ビルダーを返します。packageEntry(Utf8Entry nameEntry) 指定されたUtf8Entryを参照するPackageEntryを返します。default PackageEntrypackageEntry(PackageDesc packageDesc) 指定されたPackageDescと同じパッケージを記述するPackageEntryを返します。stringEntry(Utf8Entry utf8) Utf8Entryを参照するStringEntryを返します。default StringEntrystringEntry(String value) 指定された値を記述するStringEntryを返します。default Utf8Entry指定されたClassDescの「フィールド記述子文字列」を記述するUtf8Entryを返します。default Utf8Entryutf8Entry(MethodTypeDesc desc) 指定されたMethodTypeDescの「メソッド記述子文字列」を記述するUtf8Entryを返します。インタフェースjava.lang.classfile.constantpool.ConstantPoolで宣言されたメソッド
bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, sizeインタフェースjava.lang.Iterableで宣言されたメソッド
forEach, spliterator
-
メソッドの詳細
-
of
static ConstantPoolBuilder of(ClassModel classModel) 新しい定数プール・ビルダーを返します。 新しい定数プール・ビルダーには、指定されたクラス・モデルの定数プール「関連付け」の内容が事前に移入されます。 新しいエントリの索引は、ソース・プールのsize()から開始されます。- パラメータ:
classModel- コピー元のクラス- 戻り値:
- 新しい定数プール・ビルダー
- 関連項目:
-
of
static ConstantPoolBuilder of()新しい定数プール・ビルダーを返します。 新しい定数プール・ビルダーは空になります。 新しいエントリのインデックスは1から始まります。- 戻り値:
- 新しい定数プール・ビルダー
- 関連項目:
-
canWriteDirect
boolean canWriteDirect(ConstantPool constantPool) 指定された定数プール内のエントリの索引がこのビルダー内の同じエントリを参照している場合、trueを返します。 これは、同じビルダーであるか、このビルダーが指定された定数プールからpre-populatedであったためです。エントリの定数プールがこのプールに直接書込み可能でない場合、このプールはエイリアンであり、この定数プールに関連付けられた
ClassFileBuilderは、そのエイリアン定数プール・エントリを変換します。- パラメータ:
constantPool- 指定された定数プール- 戻り値:
- 指定された定数プール内のエントリの索引がこのビルダー内の同じエントリを参照している場合、
true - 関連項目:
-
utf8Entry
-
utf8Entry
指定されたClassDescの「フィールド記述子文字列」を記述するUtf8Entryを返します。- APIのノート:
- 結果の
Utf8Entryは、通常、内部形式のバイナリ名を使用するClassEntryを「参照元」しません。 - パラメータ:
desc- クラスのシンボリック記述子- 戻り値:
- 指定された
ClassDescの「フィールド記述子文字列」を記述するUtf8Entry
-
utf8Entry
default Utf8Entry utf8Entry(MethodTypeDesc desc) 指定されたMethodTypeDescの「メソッド記述子文字列」を記述するUtf8Entryを返します。- パラメータ:
desc- メソッド型のシンボリック記述子- 戻り値:
- 指定された
MethodTypeDescの「メソッド記述子文字列」を記述するUtf8Entry
-
classEntry
ClassEntry classEntry(Utf8Entry ne) 指定されたUtf8Entryを参照するClassEntryを返します。Utf8Entryは、クラスまたはインタフェースのバイナリ名の内部形式、または配列型のフィールド記述子文字列を示します。- パラメータ:
ne- theUtf8Entry- 戻り値:
- 指定された
Utf8Entryを参照するClassEntry - 関連項目:
-
classEntry
default ClassEntry classEntry(ClassDesc classDesc) 指定されたClassDescと同じ参照型を記述するClassEntryを返します。- パラメータ:
classDesc- 参照型のシンボリック記述子- 戻り値:
- 指定された
ClassDescと同じ参照型を記述するClassEntry - スロー:
IllegalArgumentException-classDescがプリミティブ型を表す場合- 関連項目:
-
packageEntry
PackageEntry packageEntry(Utf8Entry nameEntry) 指定されたUtf8Entryを参照するPackageEntryを返します。Utf8Entryは、パッケージ名の内部形式を示します。- パラメータ:
nameEntry- theUtf8Entry- 戻り値:
- 指定された
Utf8Entryを参照するPackageEntry - 関連項目:
-
packageEntry
default PackageEntry packageEntry(PackageDesc packageDesc) 指定されたPackageDescと同じパッケージを記述するPackageEntryを返します。- パラメータ:
packageDesc- パッケージのシンボリック記述子- 戻り値:
- 指定された
PackageDescと同じパッケージを記述するPackageEntry - 関連項目:
-
moduleEntry
ModuleEntry moduleEntry(Utf8Entry moduleName) 指定されたUtf8Entryを参照するModuleEntryを返します。Utf8Entryは、モジュール名を示します。- パラメータ:
moduleName- モジュール名を記述する定数プール・エントリ- 戻り値:
- 指定された
Utf8Entryを参照するModuleEntry - 関連項目:
-
moduleEntry
default ModuleEntry moduleEntry(ModuleDesc moduleDesc) 指定されたModuleDescと同じモジュールを記述するModuleEntryを返します。- パラメータ:
moduleDesc- モジュールのシンボリック記述子- 戻り値:
- 指定された
ModuleDescと同じモジュールを記述するModuleEntry - 関連項目:
-
nameAndTypeEntry
NameAndTypeEntry nameAndTypeEntry(Utf8Entry nameEntry, Utf8Entry typeEntry) 指定された名前を参照するNameAndTypeEntryを返し、Utf8Entryと入力します。Utf8Entryという名前は、修飾されていない名前または特殊名"<init>"を示し、Utf8Entry型はフィールドまたはメソッド記述子文字列を示します。- パラメータ:
nameEntry- 名前Utf8EntrytypeEntry- 型Utf8Entry- 戻り値:
- 指定された名前およびタイプ
Utf8Entryを参照するNameAndTypeEntry - 関連項目:
-
nameAndTypeEntry
default NameAndTypeEntry nameAndTypeEntry(String name, ClassDesc type) 指定された修飾されていない名前とフィールド記述子を記述するNameAndTypeEntryを返します。- パラメータ:
name- 修飾されていない名前type- フィールド記述子- 戻り値:
- 指定された修飾されていない名前とフィールド記述子を記述する
NameAndTypeEntry
-
nameAndTypeEntry
default NameAndTypeEntry nameAndTypeEntry(String name, MethodTypeDesc type) 指定された名前とメソッド記述子を記述するNameAndTypeEntryを返します。 名前には、修飾されていない名前または特殊名"<init>"を指定できます。- パラメータ:
name- 修飾されていない名前、または"<init>"type- メソッド記述子- 戻り値:
- 指定された名前とメソッド記述子を記述する
NameAndTypeEntry
-
fieldRefEntry
FieldRefEntry fieldRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntryおよびNameAndTypeEntryを参照するFieldRefEntryを返します。ClassEntryは、このフィールドがメンバーであるクラスまたはインタフェースを示し、NameAndTypeEntryは、このフィールドの修飾されていない名前とフィールド記述子を示します。- パラメータ:
owner- theClassEntrynameAndType- theNameAndTypeEntry- 戻り値:
ClassEntryおよびNameAndTypeEntryを参照するFieldRefEntry- 関連項目:
-
fieldRefEntry
default FieldRefEntry fieldRefEntry(ClassDesc owner, String name, ClassDesc type) クラスのフィールドを記述するFieldRefEntryを返します。- パラメータ:
owner- フィールドがメンバーであるクラスまたはインタフェースname- フィールドの未修飾名type- フィールド記述子- 戻り値:
- クラスのフィールドを記述する
FieldRefEntry - スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
methodRefEntry
MethodRefEntry methodRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntryおよびNameAndTypeEntryを参照するMethodRefEntryを返します。ClassEntryは、このメソッドをメンバーとして持つクラスを示し、NameAndTypeEntryは、修飾されていない名前または特殊名"<init>"と、このメソッドのメソッド記述子を示します。- パラメータ:
owner- theClassEntrynameAndType- theNameAndTypeEntry- 戻り値:
ClassEntryおよびNameAndTypeEntryを参照するMethodRefEntry- 関連項目:
-
methodRefEntry
default MethodRefEntry methodRefEntry(ClassDesc owner, String name, MethodTypeDesc type) クラスのメソッドを記述するMethodRefEntryを返します。- パラメータ:
owner- メソッドがメンバーであるクラスname- メソッドの修飾されていない名前または特殊名"<init>"type- メソッド記述子- 戻り値:
- クラスのメソッドを記述する
MethodRefEntry - スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
interfaceMethodRefEntry
InterfaceMethodRefEntry interfaceMethodRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntryおよびNameAndTypeEntryを参照するInterfaceMethodRefEntryを返します。ClassEntryは、このメソッドをメンバーとして持つインタフェースを示し、NameAndTypeEntryは、このメソッドの修飾されていない名前とメソッド記述子を示します。- パラメータ:
owner- theClassEntrynameAndType- theNameAndTypeEntry- 戻り値:
ClassEntryおよびNameAndTypeEntryを参照するInterfaceMethodRefEntry- 関連項目:
-
interfaceMethodRefEntry
default InterfaceMethodRefEntry interfaceMethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type) インタフェースのメソッドを記述するInterfaceMethodRefEntryを返します。- パラメータ:
owner- メソッドがメンバーであるインタフェースname- メソッドの非修飾名type- メソッド記述子- 戻り値:
- インタフェースのメソッドを記述する
InterfaceMethodRefEntry - スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
methodTypeEntry
MethodTypeEntry methodTypeEntry(MethodTypeDesc descriptor) 指定されたMethodTypeDescと同じメソッド型を記述するMethodTypeEntryを返します。- パラメータ:
descriptor- メソッド型のシンボリック記述子- 戻り値:
- 指定された
MethodTypeDescと同じメソッド型を記述するMethodTypeEntry - 関連項目:
-
methodTypeEntry
MethodTypeEntry methodTypeEntry(Utf8Entry descriptor) Utf8Entryを参照するMethodTypeEntryを返します。Utf8Entryは、メソッド記述子文字列を表します。- パラメータ:
descriptor- theUtf8Entry- 戻り値:
Utf8Entryを参照するMethodTypeEntry- 関連項目:
-
methodHandleEntry
default MethodHandleEntry methodHandleEntry(DirectMethodHandleDesc descriptor) 指定されたDirectMethodHandleDescと同じメソッド・ハンドルを記述するMethodHandleEntryを返します。- パラメータ:
descriptor- メソッド・ハンドルのシンボリック記述子- 戻り値:
- 指定された
DirectMethodHandleDescと同じメソッド・ハンドルを記述するMethodHandleEntry - 関連項目:
-
methodHandleEntry
MethodHandleEntry methodHandleEntry(int refKind, MemberRefEntry reference) 参照の種類をエンコードし、MemberRefEntryを参照するMethodHandleEntryを返します。 参照の種類は[1, 9]にある必要があり、MemberRefEntryは参照の種類(JVMS 4.4.8)に基づいて様々な制限の対象となります。- パラメータ:
refKind- メソッド・ハンドルの参照の種類reference- theMemberRefEntry- 戻り値:
- 参照の種類をエンコードし、
MemberRefEntryを参照するMethodHandleEntry - 関連項目:
-
invokeDynamicEntry
default InvokeDynamicEntry invokeDynamicEntry(DynamicCallSiteDesc dcsd) 指定されたDynamicCallSiteDescと同じ動的コール・サイトを記述するInvokeDynamicEntryを返します。- パラメータ:
dcsd- 動的コール・サイトのシンボリック記述子- 戻り値:
- 指定された
DynamicCallSiteDescと同じ動的コール・サイトを記述するInvokeDynamicEntry - 関連項目:
-
invokeDynamicEntry
InvokeDynamicEntry invokeDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) BootstrapMethodEntryおよびNameAndTypeEntryを参照するInvokeDynamicEntryを返します。BootstrapMethodEntryは、名前と型に加えて、ブートストラップ・メソッドとその起動引数、およびNameAndTypeEntryに名前とメソッド記述子を示します。- パラメータ:
bootstrapMethodEntry- theBootstrapMethodEntrynameAndType- theNameAndTypeEntry- 戻り値:
BootstrapMethodEntryおよびNameAndTypeEntryを参照するInvokeDynamicEntry- 関連項目:
-
constantDynamicEntry
default ConstantDynamicEntry constantDynamicEntry(DynamicConstantDesc<?> dcd) 指定されたDynamicConstantDescとして動的定数を記述するConstantDynamicEntryを返します。- パラメータ:
dcd- 定数のシンボリック記述子- 戻り値:
- 指定された
DynamicConstantDescとして動的定数を記述するConstantDynamicEntry - 関連項目:
-
constantDynamicEntry
ConstantDynamicEntry constantDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) BootstrapMethodEntryおよびNameAndTypeEntryを参照するConstantDynamicEntryを返します。BootstrapMethodEntryは、名前とタイプに加えて、ブートストラップ・メソッドとその起動引数、およびNameAndTypeEntryに名前とフィールド記述子を示します。- パラメータ:
bootstrapMethodEntry- theBootstrapMethodEntrynameAndType- theNameAndTypeEntry- 戻り値:
BootstrapMethodEntryおよびNameAndTypeEntryを参照するConstantDynamicEntry- 関連項目:
-
intEntry
IntegerEntry intEntry(int value) 指定された値を記述するIntegerEntryを返します。- パラメータ:
value- 値- 戻り値:
- 指定された値を記述する
IntegerEntry - 関連項目:
-
floatEntry
FloatEntry floatEntry(float value) 指定された値を記述するFloatEntryを返します。floatのすべてのNaN値は、単一の「"canonical" NaN値」に縮小される場合と縮小されない場合があります。- パラメータ:
value- 値- 戻り値:
- 指定された値を記述する
FloatEntry - 関連項目:
-
longEntry
-
doubleEntry
DoubleEntry doubleEntry(double value) 指定された値を記述するDoubleEntryを返します。doubleのすべてのNaN値は、単一の「"canonical" NaN値」に縮小される場合と縮小されない場合があります。- パラメータ:
value- 値- 戻り値:
- 指定された値を記述する
DoubleEntry - 関連項目:
-
stringEntry
StringEntry stringEntry(Utf8Entry utf8) Utf8Entryを参照するStringEntryを返します。Utf8Entryは、文字列値を示します。- パラメータ:
utf8- theUtf8Entry- 戻り値:
Utf8Entryを参照するStringEntry- 関連項目:
-
stringEntry
default StringEntry stringEntry(String value) 指定された値を記述するStringEntryを返します。- パラメータ:
value- 値- 戻り値:
- 指定された値を記述する
StringEntry - 関連項目:
-
constantValueEntry
default ConstantValueEntry constantValueEntry(ConstantDesc c) - パラメータ:
c- 指定された定数値- 戻り値:
- 指定された定数の
Integer、Long、Float、DoubleまたはString値を記述するConstantValueEntry - スロー:
IllegalArgumentException- 値がInteger,Long,Float,DoubleまたはStringのいずれでもない場合- 関連項目:
-
loadableConstantEntry
default LoadableConstantEntry loadableConstantEntry(ConstantDesc c) 指定された定数値を記述するLoadableConstantEntryを返します。- パラメータ:
c- 定数の名目記述子- 戻り値:
- 指定された定数値を記述する
LoadableConstantEntry
-
bsmEntry
default BootstrapMethodEntry bsmEntry(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) 指定されたブートストラップ・メソッドおよび引数を記述するBootstrapMethodEntryを返します。- パラメータ:
methodReference- ブートストラップ・メソッドarguments- 議論- 戻り値:
- 指定されたブートストラップ・メソッドおよび引数を記述する
BootstrapMethodEntry
-
bsmEntry
BootstrapMethodEntry bsmEntry(MethodHandleEntry methodReference, List<LoadableConstantEntry> arguments) MethodHandleEntryおよびLoadableConstantEntryのリストを参照するBootstrapMethodEntryを返します。MethodHandleEntryはブートストラップ・メソッドで、LoadableConstantEntryのリストは引数です。- パラメータ:
methodReference- theMethodHandleEntryarguments-LoadableConstantEntryのリスト- 戻り値:
MethodHandleEntryおよびLoadableConstantEntryのリストを参照するBootstrapMethodEntry- 関連項目:
-