Interface ClassReader
- All Superinterfaces:
ConstantPool
,Iterable<PoolEntry>
Advanced
class
file reading support forAttributeMapper
s. Supports reading arbitrary offsets within aclass
file and reading data of various numeric types (e.g.,u2
,u4
) in addition to constant pool access. All numeric values in theclass
file format arebig endian.
Unless otherwise specified, all out-of-bounds access result in anIllegalArgumentException
to indicate theclass
file data is malformed. Since theclass
file data is arbitrary, users should sanity-check the structural integrity of the data before attempting to interpret the potentially malformed data.
- Since:
- 24
- See Also:
Method Summary
Modifier and TypeMethodDescriptionint
Returns the length of theclass
file, in number of bytes.void
copyBytesTo
(BufWriter buf, int offset, int len) Copy a range of bytes from theclass
file to aBufWriter
.Returns the table of custom attribute mappers.int
flags()
Returns the access flags for the class, as a bit mask.byte[]
readBytes
(int offset, int len) Returns a copy of the bytes at the specified range in theclass
file.double
readDouble
(int offset) Returns the double value at the specified offset within theclass
file.readEntry
(int offset) Returns the constant pool entry whose index is given at the specified offset within theclass
file.<T extendsPoolEntry>
TReturns the constant pool entry of a given type whose index is given at the specified offset within theclass
file.readEntryOrNull
(int offset) Returns the constant pool entry whose index is given at the specified offset within theclass
file, ornull
if the index at the specified offset is zero.<T extendsPoolEntry>
TreadEntryOrNull
(int offset,Class<T> cls) Returns the constant pool entry of a given type whose index is given at the specified offset within theclass
file, ornull
if the index at the specified offset is zero.float
readFloat
(int offset) Returns the float value at the specified offset within theclass
file.int
readInt
(int offset) Returns the signed int at the specified offset within theclass
file.long
readLong
(int offset) Returns the signed long at the specified offset within theclass
file.int
readS1
(int offset) Returns the signed byte at the specified offset within theclass
file.int
readS2
(int offset) Returns the signed byte at the specified offset within theclass
file.int
readU1
(int offset) Returns the unsigned byte at the specified offset within theclass
file.int
readU2
(int offset) Returns the unsigned short at the specified offset within theclass
file.Returns the constant pool entry describing the name of the superclass, if any.Returns the constant pool entry describing the name of class.Methods declared in interface java.lang.classfile.constantpool.ConstantPool
bootstrapMethodCount,bootstrapMethodEntry,entryByIndex,entryByIndex,iterator,size
Methods declared in interface java.lang.Iterable
forEach,spliterator
Method Details
customAttributes
Function<Utf8Entry,AttributeMapper<?>> customAttributes()Returns the table of custom attribute mappers. This is derived from the processing optionClassFile.AttributeMapperOption
.- Returns:
- the table of custom attribute mappers
flags
int flags()Returns the access flags for the class, as a bit mask.- Returns:
- the access flags for the class, as a bit mask
- See Also:
thisClassEntry
ClassEntry thisClassEntry()Returns the constant pool entry describing the name of class.- Returns:
- the constant pool entry describing the name of class
- See Also:
superclassEntry
Optional<ClassEntry> superclassEntry()Returns the constant pool entry describing the name of the superclass, if any.- Returns:
- the constant pool entry describing the name of the superclass, if any
- See Also:
classfileLength
int classfileLength()Returns the length of theclass
file, in number of bytes.- Returns:
- the length of the
class
file, in number of bytes
readEntry
Returns the constant pool entry whose index is given at the specified offset within theclass
file.- API Note:
- If only a particular type of entry is expected, use
readEntry(int, Class)
. - Parameters:
offset
- the offset of the index within theclass
file- Returns:
- the constant pool entry whose index is given at the specified offset within the
class
file - Throws:
ConstantPoolException
- if the index is out of range of the constant pool size, or zero
readEntry
Returns the constant pool entry of a given type whose index is given at the specified offset within theclass
file.- Type Parameters:
T
- the entry type- Parameters:
offset
- the offset of the index within theclass
filecls
- the entry type- Returns:
- the constant pool entry of a given type whose index is given at the specified offset within the
class
file - Throws:
ConstantPoolException
- if the index is out of range of the constant pool size, or zero, or the entry is not of the given type
readEntryOrNull
Returns the constant pool entry whose index is given at the specified offset within theclass
file, ornull
if the index at the specified offset is zero.- API Note:
- If only a particular type of entry is expected, use
readEntryOrNull(int, Class)
. - Parameters:
offset
- the offset of the index within theclass
file- Returns:
- the constant pool entry whose index is given at the specified offset within the
class
file, ornull
if the index at the specified offset is zero - Throws:
ConstantPoolException
- if the index is out of range of the constant pool size
readEntryOrNull
Returns the constant pool entry of a given type whose index is given at the specified offset within theclass
file, ornull
if the index at the specified offset is zero.- Type Parameters:
T
- the entry type- Parameters:
offset
- the offset of the index within theclass
filecls
- the entry type- Returns:
- the constant pool entry of a given type whose index is given at the specified offset within the
class
file, ornull
if the index at the specified offset is zero - Throws:
ConstantPoolException
- if the index is out of range of the constant pool size, or zero, or the entry is not of the given type
readU1
int readU1(int offset) Returns the unsigned byte at the specified offset within theclass
file. Reads a byte and zero-extends it to anint
.- Parameters:
offset
- the offset within theclass
file- Returns:
- the unsigned byte at the specified offset within the
class
file
readU2
int readU2(int offset) Returns the unsigned short at the specified offset within theclass
file. Reads a 2-byte value and zero-extends it to anint
.- Parameters:
offset
- the offset within theclass
file- Returns:
- the unsigned short at the specified offset within the
class
file
readS1
int readS1(int offset) Returns the signed byte at the specified offset within theclass
file. Reads a byte and sign-extends it to anint
.- Parameters:
offset
- the offset within theclass
file- Returns:
- the signed byte at the specified offset within the
class
file
readS2
int readS2(int offset) Returns the signed byte at the specified offset within theclass
file. Reads a 2-byte value and sign-extends it to anint
.- Parameters:
offset
- the offset within theclass
file- Returns:
- the signed byte at the specified offset within the
class
file
readInt
int readInt(int offset) Returns the signed int at the specified offset within theclass
file. Reads 4 bytes of value.- Parameters:
offset
- the offset within theclass
file- Returns:
- the signed int at the specified offset within the
class
file
readLong
long readLong(int offset) Returns the signed long at the specified offset within theclass
file. Reads 8 bytes of value.- Parameters:
offset
- the offset within theclass
file- Returns:
- the signed long at the specified offset within the
class
file
readFloat
float readFloat(int offset) Returns the float value at the specified offset within theclass
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.- Parameters:
offset
- the offset within theclass
file- Returns:
- the float value at the specified offset within the
class
file
readDouble
double readDouble(int offset) Returns the double value at the specified offset within theclass
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.- Parameters:
offset
- the offset within theclass
file- Returns:
- the double value at the specified offset within the
class
file
readBytes
byte[] readBytes(int offset, int len) Returns a copy of the bytes at the specified range in theclass
file.- Parameters:
offset
- the offset within theclass
filelen
- the length of the range- Returns:
- a copy of the bytes at the specified range in the
class
file
copyBytesTo