Spec-Zone.ru › OpenJDK 24

Интерфейс ClassReader

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

Все числовые значения в формате файла class являются big endian.

Если не указано иное, любой доступ за пределы границ приводит к исключению 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()
Возвращает запись пула констант, описывающую имя класса.

Методы, унаследованные от интерфейса java.lang.classfile.constantpool.ConstantPool

bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size

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

readU2

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

readLong

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

readFloat

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

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

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

readDouble

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

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

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

readBytes

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

copyBytesTo

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

© 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/ClassReader.html

Spec-Zone.ru

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