インタフェース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 BootstrapMethodEntry
bsmEntry
(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) 指定されたブートストラップ・メソッドおよび引数を記述するBootstrapMethodEntry
を返します。boolean
canWriteDirect
(ConstantPool constantPool) 指定された定数プール内のエントリの索引がこのビルダー内の同じエントリを参照している場合、true
を返します。classEntry
(Utf8Entry ne) 指定されたUtf8Entry
を参照するClassEntry
を返します。default ClassEntry
classEntry
(ClassDesc classDesc) 指定されたClassDesc
と同じ参照型を記述するClassEntry
を返します。constantDynamicEntry
(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) BootstrapMethodEntry
およびNameAndTypeEntry
を参照するConstantDynamicEntry
を返します。default ConstantDynamicEntry
指定されたDynamicConstantDesc
として動的定数を記述するConstantDynamicEntry
を返します。default ConstantValueEntry
doubleEntry
(double value) 指定された値を記述するDoubleEntry
を返します。fieldRefEntry
(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntry
およびNameAndTypeEntry
を参照するFieldRefEntry
を返します。default FieldRefEntry
fieldRefEntry
(ClassDesc owner, String name, ClassDesc type) クラスのフィールドを記述するFieldRefEntry
を返します。floatEntry
(float value) 指定された値を記述するFloatEntry
を返します。intEntry
(int value) 指定された値を記述するIntegerEntry
を返します。interfaceMethodRefEntry
(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntry
およびNameAndTypeEntry
を参照するInterfaceMethodRefEntry
を返します。default InterfaceMethodRefEntry
interfaceMethodRefEntry
(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 MethodHandleEntry
methodHandleEntry
(DirectMethodHandleDesc descriptor) 指定されたDirectMethodHandleDesc
と同じメソッド・ハンドルを記述するMethodHandleEntry
を返します。methodRefEntry
(ClassEntry owner, NameAndTypeEntry nameAndType) ClassEntry
およびNameAndTypeEntry
を参照するMethodRefEntry
を返します。default MethodRefEntry
methodRefEntry
(ClassDesc owner, String name, MethodTypeDesc type) クラスのメソッドを記述するMethodRefEntry
を返します。methodTypeEntry
(Utf8Entry descriptor) Utf8Entry
を参照するMethodTypeEntry
を返します。methodTypeEntry
(MethodTypeDesc descriptor) 指定されたMethodTypeDesc
と同じメソッド型を記述するMethodTypeEntry
を返します。moduleEntry
(Utf8Entry moduleName) 指定されたUtf8Entry
を参照するModuleEntry
を返します。default ModuleEntry
moduleEntry
(ModuleDesc moduleDesc) 指定されたModuleDesc
と同じモジュールを記述するModuleEntry
を返します。nameAndTypeEntry
(Utf8Entry nameEntry, Utf8Entry typeEntry) 指定された名前を参照するNameAndTypeEntry
を返し、Utf8Entry
と入力します。default NameAndTypeEntry
nameAndTypeEntry
(String name, ClassDesc type) 指定された修飾されていない名前とフィールド記述子を記述するNameAndTypeEntry
を返します。default NameAndTypeEntry
nameAndTypeEntry
(String name, MethodTypeDesc type) 指定された名前とメソッド記述子を記述するNameAndTypeEntry
を返します。static ConstantPoolBuilder
of()
新しい定数プール・ビルダーを返します。static ConstantPoolBuilder
of
(ClassModel classModel) 新しい定数プール・ビルダーを返します。packageEntry
(Utf8Entry nameEntry) 指定されたUtf8Entry
を参照するPackageEntry
を返します。default PackageEntry
packageEntry
(PackageDesc packageDesc) 指定されたPackageDesc
と同じパッケージを記述するPackageEntry
を返します。stringEntry
(Utf8Entry utf8) Utf8Entry
を参照するStringEntry
を返します。default StringEntry
stringEntry
(String value) 指定された値を記述するStringEntry
を返します。default Utf8Entry
指定されたClassDesc
の「フィールド記述子文字列」を記述するUtf8Entry
を返します。default Utf8Entry
utf8Entry
(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
- 名前Utf8Entry
typeEntry
- 型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
- theClassEntry
nameAndType
- 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
- theClassEntry
nameAndType
- 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
- theClassEntry
nameAndType
- 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
- theBootstrapMethodEntry
nameAndType
- 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
- theBootstrapMethodEntry
nameAndType
- 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
- theMethodHandleEntry
arguments
-LoadableConstantEntry
のリスト- 戻り値:
MethodHandleEntry
およびLoadableConstantEntry
のリストを参照するBootstrapMethodEntry
- 関連項目:
-