Интерфейс ConstantPoolBuilder
- Все суперинтерфейсы:
ConstantPool, Iterable<PoolEntry>
public sealed interface ConstantPoolBuilder extends ConstantPool
class. Предоставляет доступ на чтение и запись к пулу констант, который создаётся. Запись выполняется только добавлением (индексы новых записей монотонно возрастают) и идемпотентна (методы, создающие записи, возвращают существующую запись, если найдётся подходящая). При построении файла class перегруженный вариант ClassFile::build принимает ConstantPoolBuilder. При преобразовании файла class с помощью ClassFile::transformClass параметр ClassFile.ConstantPoolSharingOption определяет, как создаётся построитель пула констант для результирующего class.
Чужие записи пула констант
При построении файлаclass и пула констант некоторые предоставленные записи пула констант могут быть чужими для построителя пула констант активного построителя файла класса. Например, classEntry(Utf8Entry) можно вызвать с чужой записью UTF8. Чужие записи преобразуются в записи пула этого построителя пула констант: при наличии эквивалентных записей они используются повторно, а если таких нет — добавляются новые. В результате все записи пула, возвращаемые методами, создающими записи в этом построителе пула констант, принадлежат этому пулу констант. Некоторые методы ClassFileBuilder могут корректировать результаты, если им переданы записи пула, чужие для их пулов констант. Например, если инструкция ldc_w с чужой записью записывается в CodeBuilder, CodeBuilder может вместо неё выдать функционально эквивалентную инструкцию ldc, если преобразованную запись можно закодировать в такой инструкции.
Чтобы избежать преобразования чужих записей пула констант, например для обеспечения точности сгенерированного файла class, пользователи всегда могут передавать записи пула констант, полученные вызовом методов, создающих записи, у построителей пулов констант, связанных с
ClassFileBuilder. В противном случае преобразования не влияют на поведение сгенерированных файлов class.
- Начиная с:
- 24
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
BootstrapMethodEntry |
bsmEntry |
|
default BootstrapMethodEntry |
bsmEntry |
Возвращает BootstrapMethodEntry, описывающую указанный метод загрузки и аргументы. |
boolean |
canWriteDirect |
Возвращает true, если индекс любой записи в заданном пуле констант указывает на ту же запись в этом построителе. |
ClassEntry |
classEntry |
Возвращает ClassEntry, ссылающуюся на указанную Utf8Entry. |
default ClassEntry |
classEntry |
Возвращает ClassEntry, описывающую тот же ссылочный тип, что и указанная ClassDesc. |
ConstantDynamicEntry |
constantDynamicEntry |
|
default ConstantDynamicEntry |
constantDynamicEntry |
Возвращает ConstantDynamicEntry, описывающую динамическую константу, соответствующую указанному DynamicConstantDesc. |
default ConstantValueEntry |
constantValueEntry |
|
DoubleEntry |
doubleEntry |
Возвращает DoubleEntry, описывающую указанное значение. |
FieldRefEntry |
fieldRefEntry |
|
default FieldRefEntry |
fieldRefEntry |
Возвращает FieldRefEntry, описывающую поле класса. |
FloatEntry |
floatEntry |
Возвращает FloatEntry, описывающую указанное значение. |
IntegerEntry |
intEntry |
Возвращает IntegerEntry, описывающую указанное значение. |
InterfaceMethodRefEntry |
interfaceMethodRefEntry |
|
default InterfaceMethodRefEntry |
interfaceMethodRefEntry |
Возвращает InterfaceMethodRefEntry, описывающую метод интерфейса. |
InvokeDynamicEntry |
invokeDynamicEntry |
|
default InvokeDynamicEntry |
invokeDynamicEntry |
Возвращает InvokeDynamicEntry, описывающую ту же динамическую точку вызова, что и указанный DynamicCallSiteDesc. |
default LoadableConstantEntry |
loadableConstantEntry |
Возвращает LoadableConstantEntry, описывающую указанное значение константы. |
LongEntry |
longEntry |
Возвращает LongEntry, описывающую указанное значение. |
MethodHandleEntry |
methodHandleEntry |
Возвращает MethodHandleEntry, кодирующую вид ссылки и ссылающуюся на MemberRefEntry. |
default MethodHandleEntry |
methodHandleEntry |
Возвращает MethodHandleEntry, описывающую тот же дескриптор метода, что и заданная DirectMethodHandleDesc. |
MethodRefEntry |
methodRefEntry |
|
default MethodRefEntry |
methodRefEntry |
Возвращает MethodRefEntry, описывающую метод класса. |
MethodTypeEntry |
methodTypeEntry |
Возвращает MethodTypeEntry, ссылающуюся на Utf8Entry. |
MethodTypeEntry |
methodTypeEntry |
Возвращает MethodTypeEntry, описывающую тот же тип метода, что и указанная MethodTypeDesc. |
ModuleEntry |
moduleEntry |
Возвращает ModuleEntry, ссылающуюся на указанную Utf8Entry. |
default ModuleEntry |
moduleEntry |
Возвращает ModuleEntry, описывающую тот же модуль, что и указанная ModuleDesc. |
NameAndTypeEntry |
nameAndTypeEntry |
Возвращает NameAndTypeEntry, ссылающуюся на указанную Utf8Entry имени и типа. |
default NameAndTypeEntry |
nameAndTypeEntry |
Возвращает NameAndTypeEntry, описывающую указанное неквалифицированное имя и дескриптор поля. |
default NameAndTypeEntry |
nameAndTypeEntry |
Возвращает NameAndTypeEntry, описывающую указанное имя и дескриптор метода. |
static ConstantPoolBuilder |
of() |
Возвращает новый построитель пула констант. |
static ConstantPoolBuilder |
of |
Возвращает новый построитель пула констант. |
PackageEntry |
packageEntry |
Возвращает PackageEntry, ссылающуюся на указанную Utf8Entry. |
default PackageEntry |
packageEntry |
Возвращает PackageEntry, описывающую тот же пакет, что и указанная PackageDesc. |
StringEntry |
stringEntry |
Возвращает StringEntry, ссылающуюся на Utf8Entry. |
default StringEntry |
stringEntry |
Возвращает StringEntry, описывающую указанное значение. |
default Utf8Entry |
utf8Entry |
|
default Utf8Entry |
utf8Entry |
|
Utf8Entry |
utf8Entry |
Методы, объявленные в интерфейсе ConstantPool
bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size
Методы, объявленные в интерфейсе Iterable
forEach, spliterator
Подробное описание методов
of
static ConstantPoolBuilder of(ClassModel classModel)
size() исходного пула.- Параметры:
-
classModel— класс, из которого выполняется копирование - Возвращает:
- новый построитель пула констант
- См. также:
of
static ConstantPoolBuilder of()
1.- Возвращает:
- новый построитель пула констант
- См. также:
canWriteDirect
boolean canWriteDirect(ConstantPool constantPool)
true, если индекс любой записи в заданном пуле констант указывает на ту же запись в этом построителе. Это возможно, если используется один и тот же построитель или если этот построитель был предварительно заполнен из заданного пула констант. Если пул констант записи нельзя напрямую записать в этот пул, он является чужим для этого пула, и связанный с этим пулом констант ClassFileBuilder преобразует эту чужую запись пула констант.
- Параметры:
-
constantPool— заданный пул констант - Возвращает:
-
true, если индекс любой записи в заданном пуле констант указывает на ту же запись в этом построителе - См. также:
utf8Entry
utf8Entry
default Utf8Entry utf8Entry(ClassDesc desc)
- Примечание к API:
- Полученный
Utf8Entryобычно нельзя использовать для ссылки наClassEntry, в котором применяются внутренние формы бинарных имён. - Параметры:
-
desc— символьный дескриптор класса - Возвращает:
Utf8Entry, описывающую строку дескриптора поля типа предоставленногоClassDesc
utf8Entry
default Utf8Entry utf8Entry(MethodTypeDesc desc)
Utf8Entry, описывающую строку дескриптора метода предоставленного MethodTypeDesc.- Параметры:
-
desc— символьный дескриптор типа метода - Возвращает:
Utf8Entry, описывающую строку дескриптора метода предоставленногоMethodTypeDesc
classEntry
ClassEntry classEntry(Utf8Entry ne)
ClassEntry, ссылающуюся на предоставленную Utf8Entry. Utf8Entry описывает внутреннюю форму бинарного имени класса или интерфейса либо строку дескриптора поля типа массива.- Параметры:
-
ne—Utf8Entry - Возвращает:
ClassEntry, ссылающуюся на предоставленнуюUtf8Entry- См. также:
classEntry
default ClassEntry classEntry(ClassDesc classDesc)
ClassEntry, описывающую тот же ссылочный тип, что и предоставленный ClassDesc.- Параметры:
-
classDesc— символьный дескриптор ссылочного типа - Возвращает:
ClassEntry, описывающую тот же ссылочный тип, что и предоставленныйClassDesc- Вызывает исключение:
-
IllegalArgumentException— еслиclassDescпредставляет примитивный тип - См. также:
packageEntry
PackageEntry packageEntry(Utf8Entry nameEntry)
PackageEntry, ссылающуюся на предоставленную Utf8Entry. Utf8Entry описывает внутреннюю форму имени пакета.- Параметры:
-
nameEntry—Utf8Entry - Возвращает:
PackageEntry, ссылающуюся на предоставленнуюUtf8Entry- См. также:
packageEntry
default PackageEntry packageEntry(PackageDesc packageDesc)
PackageEntry, описывающую тот же пакет, что и предоставленный PackageDesc.- Параметры:
-
packageDesc— символьный дескриптор пакета - Возвращает:
PackageEntry, описывающую тот же пакет, что и предоставленныйPackageDesc- См. также:
moduleEntry
ModuleEntry moduleEntry(Utf8Entry moduleName)
- Параметры:
-
moduleName— запись пула констант, описывающая имя модуля - Возвращает:
ModuleEntry, ссылающуюся на предоставленнуюUtf8Entry- См. также:
moduleEntry
default ModuleEntry moduleEntry(ModuleDesc moduleDesc)
ModuleEntry, описывающую тот же модуль, что и предоставленный ModuleDesc.- Параметры:
-
moduleDesc— символьный дескриптор модуля - Возвращает:
ModuleEntry, описывающую тот же модуль, что и предоставленныйModuleDesc- См. также:
nameAndTypeEntry
NameAndTypeEntry nameAndTypeEntry(Utf8Entry nameEntry, Utf8Entry typeEntry)
NameAndTypeEntry, ссылающуюся на предоставленные записи имени и типа Utf8Entry. Имя Utf8Entry описывает неквалифицированное имя или специальное имя "<init>", а тип Utf8Entry описывает строку дескриптора поля или метода.- Параметры:
-
nameEntry— запись имениUtf8Entry -
typeEntry— запись типаUtf8Entry - Возвращает:
NameAndTypeEntry, ссылающуюся на предоставленные записи имени и типаUtf8Entry- См. также:
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)
FieldRefEntry, ссылающуюся на ClassEntry и NameAndTypeEntry. ClassEntry описывает класс или интерфейс, содержащий это поле, а
NameAndTypeEntry описывает неквалифицированное имя и дескриптор поля.- Параметры:
-
owner—ClassEntry -
nameAndType—NameAndTypeEntry - Возвращает:
FieldRefEntry, ссылающуюся наClassEntryиNameAndTypeEntry- См. также:
fieldRefEntry
default FieldRefEntry fieldRefEntry(ClassDesc owner, String name, ClassDesc type)
FieldRefEntry, описывающую поле класса.- Параметры:
-
owner— класс или интерфейс, содержащий поле -
name— неквалифицированное имя поля -
type— дескриптор поля - Возвращает:
FieldRefEntry, описывающую поле класса- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
methodRefEntry
MethodRefEntry methodRefEntry(ClassEntry owner, NameAndTypeEntry nameAndType)
MethodRefEntry, ссылающуюся на ClassEntry и NameAndTypeEntry. ClassEntry описывает класс, содержащий этот метод, а NameAndTypeEntry описывает неквалифицированное имя или специальное имя "<init>" и дескриптор метода.- Параметры:
-
owner—ClassEntry -
nameAndType—NameAndTypeEntry - Возвращает:
MethodRefEntry, ссылающуюся наClassEntryиNameAndTypeEntry- См. также:
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)
InterfaceMethodRefEntry, ссылающуюся на ClassEntry и NameAndTypeEntry. ClassEntry описывает интерфейс, содержащий этот метод, а
NameAndTypeEntry описывает неквалифицированное имя и дескриптор метода.- Параметры:
-
owner—ClassEntry -
nameAndType—NameAndTypeEntry - Возвращает:
InterfaceMethodRefEntry, ссылающуюся наClassEntryиNameAndTypeEntry- См. также:
interfaceMethodRefEntry
default InterfaceMethodRefEntry interfaceMethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type)
InterfaceMethodRefEntry, описывающую метод интерфейса.- Параметры:
-
owner— интерфейс, содержащий метод -
name— неквалифицированное имя метода -
type— дескриптор метода - Возвращает:
InterfaceMethodRefEntry, описывающую метод интерфейса- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
methodTypeEntry
MethodTypeEntry methodTypeEntry(MethodTypeDesc descriptor)
MethodTypeEntry, описывающую тот же тип метода, что и предоставленный MethodTypeDesc.- Параметры:
-
descriptor— символьный дескриптор типа метода - Возвращает:
MethodTypeEntry, описывающую тот же тип метода, что и предоставленныйMethodTypeDesc- См. также:
methodTypeEntry
MethodTypeEntry methodTypeEntry(Utf8Entry descriptor)
MethodTypeEntry, ссылающуюся на Utf8Entry. Utf8Entry представляет строку дескриптора метода.- Параметры:
-
descriptor—Utf8Entry - Возвращает:
MethodTypeEntry, ссылающуюся наUtf8Entry- См. также:
methodHandleEntry
default MethodHandleEntry methodHandleEntry(DirectMethodHandleDesc descriptor)
MethodHandleEntry, описывающую тот же дескриптор метода, что и заданный DirectMethodHandleDesc.- Параметры:
-
descriptor— символьный дескриптор дескриптора метода - Возвращает:
MethodHandleEntry, описывающую тот же дескриптор метода, что и заданныйDirectMethodHandleDesc- См. также:
methodHandleEntry
MethodHandleEntry methodHandleEntry(int refKind, MemberRefEntry reference)
MethodHandleEntry, кодирующую вид ссылки и ссылающуюся на MemberRefEntry. Вид ссылки должен входить в [1, 9], а MemberRefEntry подчиняется различным ограничениям, зависящим от вида ссылки (JVMS 4.4.8).- Параметры:
-
refKind— вид ссылки дескриптора метода -
reference—MemberRefEntry - Возвращает:
MethodHandleEntry, кодирующую вид ссылки и ссылающуюся наMemberRefEntry- См. также:
invokeDynamicEntry
default InvokeDynamicEntry invokeDynamicEntry(DynamicCallSiteDesc dcsd)
InvokeDynamicEntry, описывающую ту же динамическую точку вызова, что и предоставленный DynamicCallSiteDesc.- Параметры:
-
dcsd— символьный дескриптор динамической точки вызова - Возвращает:
InvokeDynamicEntry, описывающую ту же динамическую точку вызова, что и предоставленныйDynamicCallSiteDesc- См. также:
invokeDynamicEntry
InvokeDynamicEntry invokeDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType)
InvokeDynamicEntry, ссылающуюся на BootstrapMethodEntry и NameAndTypeEntry. BootstrapMethodEntry описывает метод начальной загрузки и аргументы его вызова, а также имя и тип; NameAndTypeEntry содержит имя и дескриптор метода.- Параметры:
-
bootstrapMethodEntry—BootstrapMethodEntry -
nameAndType—NameAndTypeEntry - Возвращает:
InvokeDynamicEntry, ссылающуюся наBootstrapMethodEntryиNameAndTypeEntry- См. также:
constantDynamicEntry
default ConstantDynamicEntry constantDynamicEntry(DynamicConstantDesc<?> dcd)
ConstantDynamicEntry, описывающую динамическую константу в виде предоставленного DynamicConstantDesc.- Параметры:
-
dcd— символический дескриптор константы - Возвращает:
ConstantDynamicEntry, описывающую динамическую константу в виде предоставленногоDynamicConstantDesc- См. также:
constantDynamicEntry
ConstantDynamicEntry constantDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType)
ConstantDynamicEntry, ссылающуюся на BootstrapMethodEntry и NameAndTypeEntry. BootstrapMethodEntry описывает метод начальной загрузки и аргументы его вызова, а также имя и тип, а NameAndTypeEntry — имя и дескриптор поля.- Параметры:
-
bootstrapMethodEntry—BootstrapMethodEntry -
nameAndType—NameAndTypeEntry - Возвращает:
ConstantDynamicEntry, ссылающуюся наBootstrapMethodEntryиNameAndTypeEntry- См. также:
intEntry
IntegerEntry intEntry(int value)
IntegerEntry, описывающую предоставленное значение.- Параметры:
-
value— значение - Возвращает:
IntegerEntry, описывающую предоставленное значение- См. также:
floatEntry
FloatEntry floatEntry(float value)
FloatEntry, описывающую предоставленное значение. Все значения NaN типа float могут быть сведены или не сведены к одному «каноническому» значению NaN.
- Параметры:
-
value— значение - Возвращает:
FloatEntry, описывающую предоставленное значение- См. также:
longEntry
doubleEntry
DoubleEntry doubleEntry(double value)
DoubleEntry, описывающую предоставленное значение. Все значения NaN типа double могут быть сведены или не сведены к одному «каноническому» значению NaN.
- Параметры:
-
value— значение - Возвращает:
DoubleEntry, описывающую предоставленное значение- См. также:
stringEntry
StringEntry stringEntry(Utf8Entry utf8)
- Параметры:
-
utf8—Utf8Entry - Возвращает:
StringEntry, ссылающуюся наUtf8Entry- См. также:
stringEntry
default StringEntry stringEntry(String value)
StringEntry, описывающую предоставленное значение.- Параметры:
-
value— значение - Возвращает:
StringEntry, описывающую предоставленное значение- См. также:
constantValueEntry
default ConstantValueEntry constantValueEntry(ConstantDesc c)
ConstantValueEntry, описывающую предоставленное значение константы типа Integer, Long, Float, Double или String.- Параметры:
-
c— предоставленное значение константы - Возвращает:
ConstantValueEntry, описывающую предоставленное значение константы типаInteger,Long,Float,DoubleилиString- Исключения:
-
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)
BootstrapMethodEntry, ссылающуюся на MethodHandleEntry и список LoadableConstantEntry. MethodHandleEntry — это метод начальной загрузки, а список LoadableConstantEntry — его аргументы.- Параметры:
-
methodReference—MethodHandleEntry -
arguments— списокLoadableConstantEntry - Возвращает:
BootstrapMethodEntry, ссылающуюся наMethodHandleEntryи списокLoadableConstantEntry- См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.html