ConstantPool, Iterable<PoolEntry>public sealed interface ClassReader extends ConstantPool
class file reading support for AttributeMappers. Supports reading arbitrary offsets within a class file and reading data of various numeric types (e.g., u2, u4) in addition to constant pool access. All numeric values in the class file format are big endian.
Unless otherwise specified, all out-of-bounds access result in an IllegalArgumentException to indicate the class file data is malformed. Since the class file data is arbitrary, users should sanity-check the structural integrity of the data before attempting to interpret the potentially malformed data.
| Modifier and Type | Method | Description |
|---|---|---|
int |
classfileLength() |
Returns the length of the class file, in number of bytes. |
void |
copyBytesTo |
Copy a range of bytes from the class file to a BufWriter. |
Function |
customAttributes() |
Returns the table of custom attribute mappers. |
int |
flags() |
Returns the access flags for the class, as a bit mask. |
byte[] |
readBytes |
Returns a copy of the bytes at the specified range in the class file. |
double |
readDouble |
Returns the double value at the specified offset within the
class file. |
PoolEntry |
readEntry |
Returns the constant pool entry whose index is given at the specified offset within the class file. |
<T extends PoolEntry> |
readEntry |
Returns the constant pool entry of a given type whose index is given at the specified offset within the class file. |
PoolEntry |
readEntryOrNull |
Returns the constant pool entry whose index is given at the specified offset within the class file, or null if the index at the specified offset is zero. |
<T extends PoolEntry> |
readEntryOrNull |
Returns the constant pool entry of a given type whose index is given at the specified offset within the class file, or null if the index at the specified offset is zero. |
float |
readFloat |
Returns the float value at the specified offset within the class file. |
int |
readInt |
Returns the signed int at the specified offset within the class file. |
long |
readLong |
Returns the signed long at the specified offset within the class file. |
int |
readS1 |
Returns the signed byte at the specified offset within the class file. |
int |
readS2 |
Returns the signed byte at the specified offset within the class file. |
int |
readU1 |
Returns the unsigned byte at the specified offset within the
class file. |
int |
readU2 |
Returns the unsigned short at the specified offset within the
class file. |
Optional |
superclassEntry() |
Returns the constant pool entry describing the name of the superclass, if any. |
ClassEntry |
thisClassEntry() |
Returns the constant pool entry describing the name of class. |
bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size
forEach, spliterator
Function<Utf8Entry, AttributeMapper<?>> customAttributes()
ClassFile.AttributeMapperOption.int flags()
ClassEntry thisClassEntry()
Optional<ClassEntry> superclassEntry()
int classfileLength()
class file, in number of bytes.class file, in number of bytesPoolEntry readEntry(int offset)
class file.readEntry(int, Class).offset - the offset of the index within the class fileclass fileConstantPoolException - if the index is out of range of the constant pool size, or zero<T extends PoolEntry> T readEntry(int offset, Class<T> cls)
class file.T - the entry typeoffset - the offset of the index within the class filecls - the entry typeclass fileConstantPoolException - if the index is out of range of the constant pool size, or zero, or the entry is not of the given typePoolEntry readEntryOrNull(int offset)
class file, or null if the index at the specified offset is zero.readEntryOrNull(int, Class).offset - the offset of the index within the class fileclass file, or null if the index at the specified offset is zeroConstantPoolException - if the index is out of range of the constant pool size<T extends PoolEntry> T readEntryOrNull(int offset, Class<T> cls)
class file, or null if the index at the specified offset is zero.T - the entry typeoffset - the offset of the index within the class filecls - the entry typeclass file, or null if the index at the specified offset is zeroConstantPoolException - if the index is out of range of the constant pool size, or zero, or the entry is not of the given typeint readU1(int offset)
class file. Reads a byte and zero-extends it to an int.offset - the offset within the class file
class fileint readU2(int offset)
class file. Reads a 2-byte value and zero-extends it to an int.offset - the offset within the class file
class fileint readS1(int offset)
class file. Reads a byte and sign-extends it to an int.offset - the offset within the class fileclass fileint readS2(int offset)
class file. Reads a 2-byte value and sign-extends it to an int.offset - the offset within the class fileclass fileint readInt(int offset)
class file. Reads 4 bytes of value.offset - the offset within the class fileclass filelong readLong(int offset)
class file. Reads 8 bytes of value.offset - the offset within the class fileclass filefloat readFloat(int offset)
class file. Reads 4 bytes of value. In the conversions, all NaN values of the float may or may not be collapsed into a single "canonical" NaN value.
offset - the offset within the class fileclass filedouble readDouble(int offset)
class file. Reads 8 bytes of value. In the conversions, all NaN values of the double may or may not be collapsed into a single "canonical" NaN value.
offset - the offset within the class file
class filebyte[] readBytes(int offset, int len)
class file.offset - the offset within the class filelen - the length of the rangeclass file
© 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