Интерфейс 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, описывающий строку дескриптора метода предоставленного MethodTypeDesc. |
Utf8Entry |
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, если индекс любой записи в данном пуле констант ссылается на ту же запись в этом строителе. Это может быть потому, что это один и тот же строитель, или потому, что этот строитель был предварительно заполнен из данного пула констант. Если пул констант записи не может быть напрямую записан в этот пул, он является внешним для этого пула, и ClassFileBuilder, связанный с этим пулом констант, преобразует эту внешнюю запись пула констант.
- Параметры:
-
constantPool- данный пул констант - Возвращает:
-
true, если индекс любой записи в данном пуле констант ссылается на ту же запись в этом строителе - См. также:
utf8Entry
utf8Entry
default Utf8Entry utf8Entry(ClassDesc desc)
Utf8Entry, описывающий строку дескриптора поля field descriptor string предоставленного ClassDesc.- Примечание к API:
- Полученный
Utf8Entryобычно не ссылается наClassEntry, который использует внутреннюю форму двоичных имен. - Параметры:
-
desc- символический дескриптор для класса - Возвращает:
- a
Utf8Entry, описывающий строку дескриптора поля field descriptor string предоставленногоClassDesc
utf8Entry
default Utf8Entry utf8Entry(MethodTypeDesc desc)
Utf8Entry, описывающий строку дескриптора метода method descriptor string предоставленного MethodTypeDesc.- Параметры:
-
desc- символический дескриптор для типа метода - Возвращает:
- a
Utf8Entry, описывающий строку дескриптора метода method descriptor string предоставленногоMethodTypeDesc
classEntry
ClassEntry classEntry(Utf8Entry ne)
ClassEntry, ссылающийся на предоставленный Utf8Entry. Utf8Entry описывает внутреннюю форму двоичного имени класса или интерфейса или строку дескриптора поля для массива.- Параметры:
-
ne-Utf8Entry - Возвращает:
- a
ClassEntry, ссылающийся на предоставленныйUtf8Entry - См. также:
classEntry
default ClassEntry classEntry(ClassDesc classDesc)
ClassEntry, описывающий тот же ссылочный тип, что и предоставленный ClassDesc.- Параметры:
-
classDesc- символический дескриптор для ссылочного типа - Возвращает:
- a
ClassEntry, описывающий тот же ссылочный тип, что и предоставленныйClassDesc - Исключения:
-
IllegalArgumentException- еслиclassDescпредставляет примитивный тип - См. также:
packageEntry
PackageEntry packageEntry(Utf8Entry nameEntry)
PackageEntry, ссылающийся на предоставленный Utf8Entry. Utf8Entry описывает внутреннюю форму имени пакета.- Параметры:
-
nameEntry-Utf8Entry - Возвращает:
- a
PackageEntry, ссылающийся на предоставленныйUtf8Entry - См. также:
packageEntry
default PackageEntry packageEntry(PackageDesc packageDesc)
PackageEntry, описывающий тот же пакет, что и предоставленный PackageDesc.- Параметры:
-
packageDesc- символический дескриптор для пакета - Возвращает:
- a
PackageEntry, описывающий тот же пакет, что и предоставленныйPackageDesc - См. также:
moduleEntry
ModuleEntry moduleEntry(Utf8Entry moduleName)
- Параметры:
-
moduleName- запись пула констант, описывающая имя модуля - Возвращает:
- a
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, описывающий метод интерфейса.- Parameters:
-
owner- интерфейс, к которому принадлежит метод -
name- неопределённое имя метода -
type- описание метода - Returns:
-
InterfaceMethodRefEntry, описывающий метод интерфейса - Throws:
-
IllegalArgumentException- еслиownerпредставляет примитивный тип - See Also:
methodTypeEntry
MethodTypeEntry methodTypeEntry(MethodTypeDesc descriptor)
MethodTypeEntry, описывающий тот же тип метода, что и предоставленный MethodTypeDesc.- Parameters:
-
descriptor- символическое описание типа метода - Returns:
-
MethodTypeEntry, описывающий тот же тип метода, что и предоставленныйMethodTypeDesc - See Also:
methodTypeEntry
MethodTypeEntry methodTypeEntry(Utf8Entry descriptor)
MethodTypeEntry, ссылающийся на Utf8Entry. Utf8Entry представляет строку описания метода.- Parameters:
-
descriptor-Utf8Entry - Returns:
-
MethodTypeEntry, ссылающийся наUtf8Entry - See Also:
methodHandleEntry
default MethodHandleEntry methodHandleEntry(DirectMethodHandleDesc descriptor)
MethodHandleEntry, описывающий тот же обработчик методов, что и предоставленный DirectMethodHandleDesc.- Parameters:
-
descriptor- символическое описание обработчика методов - Returns:
-
MethodHandleEntry, описывающий тот же обработчик методов, что и предоставленныйDirectMethodHandleDesc - See Also:
methodHandleEntry
MethodHandleEntry methodHandleEntry(int refKind, MemberRefEntry reference)
MethodHandleEntry, кодирующий тип ссылки и ссылающийся на MemberRefEntry. Тип ссылки должен быть в [1, 9], а MemberRefEntry подчиняется различным ограничениям, основанным на типе ссылки (JVMS 4.4.8).- Parameters:
-
refKind- тип ссылки обработчика методов -
reference-MemberRefEntry - Returns:
-
MethodHandleEntry, кодирующий тип ссылки и ссылающийся наMemberRefEntry - See Also:
invokeDynamicEntry
default InvokeDynamicEntry invokeDynamicEntry(DynamicCallSiteDesc dcsd)
InvokeDynamicEntry, описывающий ту же динамическую точку вызова, что и предоставленный DynamicCallSiteDesc.- Parameters:
-
dcsd- символическое описание динамической точки вызова - Returns:
-
InvokeDynamicEntry, описывающий ту же динамическую точку вызова, что и предоставленныйDynamicCallSiteDesc - See Also:
invokeDynamicEntry
InvokeDynamicEntry invokeDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType)
InvokeDynamicEntry, ссылающийся на BootstrapMethodEntry и NameAndTypeEntry. BootstrapMethodEntry описывает метод загрузки и его аргументы вызова в дополнение к имени и типу, а NameAndTypeEntry имя и описание метода.- Parameters:
-
bootstrapMethodEntry-BootstrapMethodEntry -
nameAndType-NameAndTypeEntry - Returns:
-
InvokeDynamicEntry, ссылающийся наBootstrapMethodEntryиNameAndTypeEntry - See Also:
constantDynamicEntry
default ConstantDynamicEntry constantDynamicEntry(DynamicConstantDesc<?> dcd)
ConstantDynamicEntry, описывающий динамическую константу как предоставленный DynamicConstantDesc.- Parameters:
-
dcd- символическое описание константы - Returns:
-
ConstantDynamicEntry, описывающий динамическую константу как предоставленныйDynamicConstantDesc - See Also:
constantDynamicEntry
ConstantDynamicEntry constantDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType)
ConstantDynamicEntry, ссылающийся на BootstrapMethodEntry и NameAndTypeEntry. BootstrapMethodEntry описывает метод загрузки и его аргументы вызова в дополнение к имени и типу, а NameAndTypeEntry имя и описание поля.- Parameters:
-
bootstrapMethodEntry-BootstrapMethodEntry -
nameAndType-NameAndTypeEntry - Returns:
ConstantDynamicEntry, ссылающийся наBootstrapMethodEntryиNameAndTypeEntry- See Also:
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.html