Package org.apache.bcel.classfile
Class ConstantPool
java.lang.Object
org.apache.bcel.classfile.ConstantPool
This class represents the constant pool, i.e., a table of constants, of a parsed classfile. It may contain null references, due to the JVM specification that
skips an entry after an 8-byte constant (double, long) entry. Those interested in generating constant pools programmatically should see
ConstantPoolGen.
- See Also:
-
Constructor Summary
ConstructorDescriptionConstantPool
(DataInput input) Reads constants from given input stream.ConstantPool
(Constant[] constantPool) -
Method Summary
Modifier and TypeMethodDescriptionvoid
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.constantToString
(int index, byte tag) Retrieves constant at 'index' from constant pool and resolve it to a string representation.Resolves constant to a string representation.copy()
void
dump
(DataOutputStream file) Dump constant pool to file stream in binary format.<T extends Constant>
TgetConstant
(int index) Gets constant from constant pool.<T extends Constant>
TgetConstant
(int index, byte tag) Gets constant from constant pool and check whether it has the expected type.<T extends Constant>
TgetConstant
(int index, byte tag, Class<T> castTo) Gets constant from constant pool and check whether it has the expected type.<T extends Constant>
TgetConstant
(int index, Class<T> castTo) Gets constant from constant pool.getConstantInteger
(int index) Gets constant from constant pool and check whether it has the expected type.Constant[]
getConstantString
(int index, byte tag) Gets string from constant pool and bypass the indirection of 'ConstantClass' and 'ConstantString' objects.getConstantUtf8
(int index) Gets constant from constant pool and check whether it has the expected type.int
iterator()
void
setConstant
(int index, Constant constant) void
setConstantPool
(Constant[] constantPool) toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ConstantPool
- Parameters:
constantPool
- Array of constants
-
ConstantPool
Reads constants from given input stream.- Parameters:
input
- Input stream- Throws:
IOException
- if problem in readUnsignedShort or readConstant
-
-
Method Details
-
accept
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects. -
constantToString
Resolves constant to a string representation.- Parameters:
c
- Constant to be printed- Returns:
- String representation
- Throws:
IllegalArgumentException
- if c is unknown constant type
-
constantToString
Retrieves constant at 'index' from constant pool and resolve it to a string representation.- Parameters:
index
- of constant in constant pooltag
- expected type- Returns:
- String representation
-
copy
- Returns:
- deep copy of this constant pool
-
dump
Dump constant pool to file stream in binary format.- Parameters:
file
- Output file stream- Throws:
IOException
- if problem in writeShort or dump
-
getConstant
Gets constant from constant pool.- Parameters:
index
- Index in constant pool- Returns:
- Constant value
- Throws:
ClassFormatException
- if index is invalid- See Also:
-
getConstant
Gets constant from constant pool and check whether it has the expected type.- Parameters:
index
- Index in constant pooltag
- Tag of expected constant, i.e., its type- Returns:
- Constant value
- Throws:
ClassFormatException
- if constant type does not match tag- See Also:
-
getConstant
public <T extends Constant> T getConstant(int index, byte tag, Class<T> castTo) throws ClassFormatException Gets constant from constant pool and check whether it has the expected type.- Parameters:
index
- Index in constant pooltag
- Tag of expected constant, i.e., its type- Returns:
- Constant value
- Throws:
ClassFormatException
- if constant type does not match tag- Since:
- 6.6.0
- See Also:
-
getConstant
Gets constant from constant pool.- Type Parameters:
T
- AConstant
subclass- Parameters:
index
- Index in constant poolcastTo
- TheConstant
subclass to cast to.- Returns:
- Constant value
- Throws:
ClassFormatException
- if index is invalid- Since:
- 6.6.0
- See Also:
-
getConstantInteger
Gets constant from constant pool and check whether it has the expected type.- Parameters:
index
- Index in constant pool- Returns:
- ConstantInteger value
- Throws:
ClassFormatException
- if constant type does not match tag- See Also:
-
getConstantPool
- Returns:
- Array of constants.
- See Also:
-
getConstantString
Gets string from constant pool and bypass the indirection of 'ConstantClass' and 'ConstantString' objects. I.e. these classes have an index field that points to another entry of the constant pool of type 'ConstantUtf8' which contains the real data.- Parameters:
index
- Index in constant pooltag
- Tag of expected constant, either ConstantClass or ConstantString- Returns:
- Contents of string reference
- Throws:
IllegalArgumentException
- if tag is invalid- See Also:
-
getConstantUtf8
Gets constant from constant pool and check whether it has the expected type.- Parameters:
index
- Index in constant pool- Returns:
- ConstantUtf8 value
- Throws:
ClassFormatException
- if constant type does not match tag- See Also:
-
getLength
- Returns:
- Length of constant pool.
-
iterator
-
setConstant
- Parameters:
constant
- Constant to set
-
setConstantPool
- Parameters:
constantPool
-
-
toString
-