Spec-Zone.ru › OpenJDK 25

Интерфейс ClassReader

Все суперинтерфейсы:
ConstantPool, Iterable<PoolEntry>
public sealed interface ClassReader extends ConstantPool
Расширенная поддержка чтения файлов class для AttributeMappers. Поддерживает чтение данных с произвольных смещений в файле 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)
Возвращает знаковое значение типа byte по указанному смещению в файле class.
int readS2(int offset)
Возвращает знаковое значение типа byte по указанному смещению в файле class.
int readU1(int offset)
Возвращает беззнаковое значение типа byte по указанному смещению в файле class.
int readU2(int offset)
Возвращает беззнаковое значение типа short по указанному смещению в файле class.
Optional<ClassEntry> superclassEntry()
Возвращает запись пула констант, описывающую имя суперкласса, если он есть.
ClassEntry thisClassEntry()
Возвращает запись пула констант, описывающую имя класса.

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

bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size

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

forEach, spliterator

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

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)
Возвращает беззнаковое значение типа byte по указанному смещению в файле class. Считывает байт и расширяет его нулями до типа int.
Параметры:
offset — смещение в файле class
Возвращает:
беззнаковое значение типа byte по указанному смещению в файле class

readU2

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

readS1

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

readS2

int readS2(int offset)
Возвращает знаковое значение типа byte по указанному смещению в файле class. Считывает 2-байтовое значение и расширяет его знаком до типа int.
Параметры:
offset — смещение в файле class
Возвращает:
знаковое значение типа byte по указанному смещению в файле 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/ClassReader.html

Spec-Zone.ru

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