Интерфейс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
bootstrapMethodCount() |
Возвращает количество записей в таблице методов начальной загрузки. |
BootstrapMethodEntry |
bootstrapMethodEntry |
Возвращает BootstrapMethodEntry с указанным индексом в таблице методов начальной загрузки. |
PoolEntry |
entryByIndex |
Возвращает запись с указанным индексом. |
<T extends PoolEntry> |
entryByIndex |
Возвращает запись указанного типа с заданным индексом. |
default Iterator |
iterator() |
Возвращает итератор по записям пула. |
int |
size() |
Возвращает исключительную верхнюю границу допустимых индексов этого пула констант. |
Методы, объявленные в интерфейсе Iterable
forEach, spliterator | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
forEach |
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не вызовет исключение. |
default Spliterator |
spliterator() |
Создаёт Spliterator для элементов, описываемых этим Iterable. |
Подробное описание методов
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)
- Параметры:
-
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- Исключения:
-
IllegalArgumentException— еслиrefKindне являетсяu1 - См. также:
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, описывающую предоставленный метод начальной загрузки и аргументы- Исключения:
-
IllegalArgumentException— если количество аргументов превышает ограничениеu2
bsmEntry
BootstrapMethodEntry bsmEntry(MethodHandleEntry methodReference, List<LoadableConstantEntry> arguments)
BootstrapMethodEntry, ссылающуюся на MethodHandleEntry и список LoadableConstantEntry. MethodHandleEntry — это метод начальной загрузки, а список LoadableConstantEntry — аргументы.- Параметры:
-
methodReference—MethodHandleEntry -
arguments— списокLoadableConstantEntry - Возвращает:
BootstrapMethodEntry, ссылающуюся наMethodHandleEntryи списокLoadableConstantEntry- Исключения:
-
IllegalArgumentException— если количество аргументов превышает ограничениеu2 - См. также:
© 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.