Интерфейс ClassReader
- Все суперинтерфейсы:
ConstantPool, Iterable<PoolEntry>
public sealed interface ClassReader extends ConstantPool
class для AttributeMappers. Поддерживает чтение данных с произвольных смещений в файле class и чтение данных различных числовых типов (например, u2, u4) в дополнение к доступу к пулу констант. Все числовые значения в формате файла class имеют порядок байтов от старшего к младшему.
Если не указано иное, любой выход за границы приводит к возникновению IllegalArgumentException, указывая на некорректность данных файла class. Поскольку данные файла class произвольны, пользователям следует проверять структурную целостность данных, прежде чем пытаться интерпретировать потенциально некорректные данные.
- Начиная с:
- 24
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
classfileLength() |
Возвращает длину файла class в байтах. |
void |
copyBytesTo |
Копирует диапазон байтов из файла class в BufWriter. |
Function |
customAttributes() |
Возвращает таблицу пользовательских сопоставителей атрибутов. |
int |
flags() |
Возвращает флаги доступа к классу в виде битовой маски. |
byte[] |
readBytes |
Возвращает копию байтов в указанном диапазоне файла class. |
double |
readDouble |
Возвращает значение типа double по указанному смещению в файле
class. |
PoolEntry |
readEntry |
Возвращает запись пула констант, индекс которой указан по заданному смещению в файле class. |
<T extends PoolEntry> |
readEntry |
Возвращает запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class. |
PoolEntry |
readEntryOrNull |
Возвращает запись пула констант, индекс которой указан по заданному смещению в файле class, или null, если индекс по заданному смещению равен нулю. |
<T extends PoolEntry> |
readEntryOrNull |
Возвращает запись пула констант заданного типа, индекс которой указан по заданному смещению в файле class, или null, если индекс по заданному смещению равен нулю. |
float |
readFloat |
Возвращает значение типа float по указанному смещению в файле class. |
int |
readInt |
Возвращает знаковое целое значение типа int по указанному смещению в файле class. |
long |
readLong |
Возвращает знаковое целое значение типа long по указанному смещению в файле class. |
int |
readS1 |
Возвращает знаковое значение типа byte по указанному смещению в файле class. |
int |
readS2 |
Возвращает знаковое значение типа byte по указанному смещению в файле class. |
int |
readU1 |
Возвращает беззнаковое значение типа byte по указанному смещению в файле
class. |
int |
readU2 |
Возвращает беззнаковое значение типа short по указанному смещению в файле
class. |
Optional |
superclassEntry() |
Возвращает запись пула констант, описывающую имя суперкласса, если он есть. |
ClassEntry |
thisClassEntry() |
Возвращает запись пула констант, описывающую имя класса. |
Методы, объявленные в интерфейсе ConstantPool
bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size
Методы, объявленные в интерфейсе Iterable
forEach, spliterator
Подробное описание методов
customAttributes
Function<Utf8Entry, AttributeMapper<?>> customAttributes()
ClassFile.AttributeMapperOption.- Возвращает:
- таблицу пользовательских сопоставителей атрибутов
flags
int flags()
- Возвращает:
- флаги доступа к классу в виде битовой маски
- См. также:
thisClassEntry
ClassEntry thisClassEntry()
- Возвращает:
- запись пула констант, описывающую имя класса
- См. также:
superclassEntry
Optional<ClassEntry> superclassEntry()
- Возвращает:
- запись пула констант, описывающую имя суперкласса, если он есть
- См. также:
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 - Возвращает:
- беззнаковое значение типа byte по указанному смещению в файле
class
readU2
int readU2(int offset)
class. Считывает 2-байтовое значение и расширяет его нулями до типа int.- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- беззнаковое значение типа short по указанному смещению в файле
class
readS1
int readS1(int offset)
class. Считывает байт и расширяет его знаком до типа int.- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- знаковое значение типа byte по указанному смещению в файле
class
readS2
int readS2(int offset)
class. Считывает 2-байтовое значение и расширяет его знаком до типа int.- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- знаковое значение типа byte по указанному смещению в файле
class
readInt
int readInt(int offset)
class. Считывает значение длиной 4 байта.- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- знаковое целое значение типа int по указанному смещению в файле
class
readLong
long readLong(int offset)
class. Считывает значение длиной 8 байт.- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- знаковое целое значение типа long по указанному смещению в файле
class
readFloat
float readFloat(int offset)
class. Считывает значение длиной 4 байта. При преобразованиях все значения NaN типа float могут быть сведены или не сведены к одному «каноническому» значению NaN.
- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- значение типа float по указанному смещению в файле
class
readDouble
double readDouble(int offset)
class. Считывает значение длиной 8 байт. При преобразованиях все значения NaN типа double могут быть сведены или не сведены к одному «каноническому» значению NaN.
- Параметры:
-
offset— смещение в файлеclass - Возвращает:
- значение типа double по указанному смещению в файле
class
readBytes
byte[] readBytes(int offset, int len)
class.- Параметры:
-
offset— смещение в файлеclass -
len— длина диапазона - Возвращает:
- копию байтов в указанном диапазоне файла
class
copyBytesTo
© 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