Spec-Zone.ru › OpenJDK 27

Интерфейс ClassReader

Все суперинтерфейсы:
ConstantPool, Iterable<PoolEntry>
public sealed interface ClassReader extends ConstantPool
Расширенная поддержка чтения файлов class для AttributeMapper. Поддерживает чтение по произвольным смещениям в файле class и чтение данных различных числовых типов (например, u2, u4) в дополнение к доступу к пулу констант.

Все числовые значения в формате файла class имеют порядок байтов от старшего к младшему.

Если не указано иное, доступ за пределами допустимого диапазона приводит к IllegalArgumentException, указывающему на повреждение данных файла class. Поскольку данные файла class являются произвольными, пользователям следует проверять структурную целостность данных перед попыткой интерпретировать потенциально поврежденные данные.

С версии:
24
См. также:
  • AttributeMapper.readAttribute(AttributedElement, ClassReader, int)

Краткое описание методов

Модификатор и тип Метод Описание
int classfileLength()
Возвращает длину файла class в байтах.
void copyBytesTo(BufWriter buf, int offset, int len)
Копирует диапазон байтов из файла class в BufWriter.
Function<Utf8Entry, AttributeMapper<?>> customAttributes()
Возвращает таблицу пользовательских сопоставителей атрибутов.
int flags()
Возвращает флаги доступа к классу в виде битовой маски.
byte[] readBytes(int offset, int len)
Возвращает копию байтов в указанном диапазоне файла class.
double readDouble(int offset)
Возвращает значение типа double по указанному смещению в файле class.
PoolEntry readEntry(int offset)
Возвращает запись пула констант, индекс которой указан по заданному смещению в файле class.
<T extends PoolEntry>
T
readEntry(int offset, Class<T> cls)
Возвращает запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class.
PoolEntry readEntryOrNull(int offset)
Возвращает запись пула констант, индекс которой указан по заданному смещению в файле class, или null, если индекс по указанному смещению равен нулю.
<T extends PoolEntry>
T
readEntryOrNull(int offset, Class<T> cls)
Возвращает запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class, или null, если индекс по указанному смещению равен нулю.
float readFloat(int offset)
Возвращает значение типа float по указанному смещению в файле class.
int readInt(int offset)
Возвращает знаковое значение типа int по указанному смещению в файле class.
long readLong(int offset)
Возвращает знаковое значение типа long по указанному смещению в файле class.
int readS1(int offset)
Возвращает знаковый байт по указанному смещению в файле class.
int readS2(int offset)
Возвращает знаковый байт по указанному смещению в файле class.
int readU1(int offset)
Возвращает беззнаковый байт по указанному смещению в файле class.
int readU2(int offset)
Возвращает u2 по указанному смещению в файле class.
Optional<ClassEntry> superclassEntry()
Возвращает запись пула констант, содержащую имя суперкласса, если он есть.
ClassEntry thisClassEntry()
Возвращает запись пула констант, содержащую имя класса.

Методы, объявленные в интерфейсе ConstantPool

bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size
Модификатор и тип Метод Описание
int bootstrapMethodCount()
Возвращает количество записей в таблице методов начальной загрузки.
BootstrapMethodEntry bootstrapMethodEntry(int index)
Возвращает BootstrapMethodEntry с указанным индексом в таблице методов начальной загрузки.
PoolEntry entryByIndex(int index)
Возвращает запись с указанным индексом.
<T extends PoolEntry>
T
entryByIndex(int index, Class<T> cls)
Возвращает запись заданного типа с указанным индексом.
default Iterator<PoolEntry> iterator()
Возвращает итератор по записям пула.
int size()
Возвращает исключительную верхнюю границу допустимых индексов этого пула констант.

Методы, объявленные в интерфейсе Iterable

forEach, spliterator
Модификатор и тип Метод Описание
default void forEach(Consumer<? super PoolEntry> action)
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не вызовет исключение.
default Spliterator<PoolEntry> spliterator()
Создает Spliterator для элементов, описанных этим Iterable.

Подробное описание методов

customAttributes

Function<Utf8Entry, AttributeMapper<?>> customAttributes()
Возвращает таблицу пользовательских сопоставителей атрибутов. Она определяется параметром обработки ClassFile.AttributeMapperOption.
Возвращает:
таблицу пользовательских сопоставителей атрибутов

flags

int flags()
Возвращает флаги доступа к классу в виде битовой маски.
Возвращает:
флаги доступа к классу в виде битовой маски
См. также:
  • ClassModel.flags()

thisClassEntry

ClassEntry thisClassEntry()
Возвращает запись пула констант, содержащую имя класса.
Возвращает:
запись пула констант, содержащую имя класса
См. также:
  • ClassModel.thisClass()

superclassEntry

Optional<ClassEntry> superclassEntry()
Возвращает запись пула констант, содержащую имя суперкласса, если он есть.
Возвращает:
запись пула констант, содержащую имя суперкласса, если он есть
См. также:
  • ClassModel.superclass()

classfileLength

int classfileLength()
Возвращает длину файла class в байтах.
Возвращает:
длину файла class в байтах

readEntry

PoolEntry readEntry(int offset)
Возвращает запись пула констант, индекс которой указан по заданному смещению в файле class.
Примечание API:
Если ожидается запись только определенного типа, используйте readEntry(int, Class).
Параметры:
offset — смещение индекса в файле class
Возвращает:
запись пула констант, индекс которой указан по заданному смещению в файле class
Вызывает:
ConstantPoolException — если индекс выходит за пределы размера пула констант или равен нулю

readEntry

<T extends PoolEntry> T readEntry(int offset, Class<T> cls)
Возвращает запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class.
Параметры типа:
T — тип записи
Параметры:
offset — смещение индекса в файле class
cls — тип записи
Возвращает:
запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class
Вызывает:
ConstantPoolException — если индекс выходит за пределы размера пула констант или равен нулю либо запись не имеет заданного типа

readEntryOrNull

PoolEntry readEntryOrNull(int offset)
Возвращает запись пула констант, индекс которой указан по заданному смещению в файле class, или null, если индекс по указанному смещению равен нулю.
Примечание API:
Если ожидается запись только определенного типа, используйте readEntryOrNull(int, Class).
Параметры:
offset — смещение индекса в файле class
Возвращает:
запись пула констант, индекс которой указан по заданному смещению в файле class, или null, если индекс по указанному смещению равен нулю
Вызывает:
ConstantPoolException — если индекс выходит за пределы размера пула констант

readEntryOrNull

<T extends PoolEntry> T readEntryOrNull(int offset, Class<T> cls)
Возвращает запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class, или null, если индекс по указанному смещению равен нулю.
Параметры типа:
T — тип записи
Параметры:
offset — смещение индекса в файле class
cls — тип записи
Возвращает:
запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class, или null, если индекс по указанному смещению равен нулю
Вызывает:
ConstantPoolException — если индекс выходит за пределы размера пула констант или равен нулю либо запись не имеет заданного типа

readU1

int readU1(int offset)
Возвращает беззнаковый байт по указанному смещению в файле class. Считывает байт и расширяет его нулями до значения типа int.
Параметры:
offset — смещение в файле class
Возвращает:
беззнаковый байт по указанному смещению в файле class

readU2

int readU2(int offset)
Возвращает u2 по указанному смещению в файле class. Считывает 2-байтовое значение и расширяет его нулями до значения типа int.
Параметры:
offset — смещение в файле class
Возвращает:
u2 по указанному смещению в файле class

readS1

int readS1(int offset)
Возвращает знаковый байт по указанному смещению в файле class. Считывает байт и расширяет его знаком до значения типа int.
Параметры:
offset — смещение в файле class
Возвращает:
знаковый байт по указанному смещению в файле class

readS2

int readS2(int offset)
Возвращает знаковый байт по указанному смещению в файле class. Считывает 2-байтовое значение и расширяет его знаком до значения типа int.
Параметры:
offset — смещение в файле class
Возвращает:
знаковый байт по указанному смещению в файле class

readInt

int readInt(int offset)
Возвращает знаковое значение типа int по указанному смещению в файле class. Считывает значение размером 4 байта.
Параметры:
offset — смещение в файле class
Возвращает:
знаковое значение типа int по указанному смещению в файле class

readLong

long readLong(int offset)
Возвращает знаковое значение типа long по указанному смещению в файле class. Считывает значение размером 8 байт.
Параметры:
offset — смещение в файле class
Возвращает:
знаковое значение типа long по указанному смещению в файле class

readFloat

float readFloat(int offset)
Возвращает значение типа float по указанному смещению в файле class. Считывает значение размером 4 байта.

При преобразованиях все значения NaN типа float могут быть сведены или не сведены к одному «каноническому» значению NaN.

Параметры:
offset — смещение в файле class
Возвращает:
значение типа float по указанному смещению в файле class

readDouble

double readDouble(int offset)
Возвращает значение типа double по указанному смещению в файле class. Считывает значение размером 8 байт.

При преобразованиях все значения NaN типа double могут быть сведены или не сведены к одному «каноническому» значению NaN.

Параметры:
offset — смещение в файле class
Возвращает:
значение типа double по указанному смещению в файле class

readBytes

byte[] readBytes(int offset, int len)
Возвращает копию байтов в указанном диапазоне файла class.
Параметры:
offset — смещение в файле class
len — длина диапазона
Возвращает:
копию байтов в указанном диапазоне файла class

copyBytesTo

void copyBytesTo(BufWriter buf, int offset, int len)
Копирует диапазон байтов из файла class в BufWriter.
Параметры:
buf — BufWriter
offset — смещение в файле class
len — длина диапазона

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания, ориентированные на разработчиков, с концептуальными обзорами, определениями терминов, способами обхода проблем и примерами работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API