Package org.apache.bcel.classfile
Class ConstantPool
- java.lang.Object
-
- org.apache.bcel.classfile.ConstantPool
-
public class ConstantPool extends Object implements Cloneable, Node
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 programatically should see ConstantPoolGen.- See Also:
Constant
,ConstantPoolGen
-
-
Constructor Summary
Constructors Constructor Description ConstantPool(DataInput input)
Reads constants from given input stream.ConstantPool(Constant[] constantPool)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.String
constantToString(int index, byte tag)
Retrieves constant at `index' from constant pool and resolve it to a string representation.String
constantToString(Constant c)
Resolves constant to a string representation.ConstantPool
copy()
void
dump(DataOutputStream file)
Dump constant pool to file stream in binary format.Constant
getConstant(int index)
Gets constant from constant pool.Constant
getConstant(int index, byte tag)
Gets constant from constant pool and check whether it has the expected type.Constant[]
getConstantPool()
String
getConstantString(int index, byte tag)
Gets string from constant pool and bypass the indirection of `ConstantClass' and `ConstantString' objects.int
getLength()
void
setConstant(int index, Constant constant)
void
setConstantPool(Constant[] constantPool)
String
toString()
-
-
-
Constructor Detail
-
ConstantPool
public ConstantPool(Constant[] constantPool)
- Parameters:
constantPool
- Array of constants
-
ConstantPool
public ConstantPool(DataInput input) throws IOException, ClassFormatException
Reads constants from given input stream.- Parameters:
input
- Input stream- Throws:
IOException
ClassFormatException
-
-
Method Detail
-
accept
public void accept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
-
constantToString
public String constantToString(Constant c) throws ClassFormatException
Resolves constant to a string representation.- Parameters:
c
- Constant to be printed- Returns:
- String representation
- Throws:
ClassFormatException
-
constantToString
public String constantToString(int index, byte tag) throws ClassFormatException
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
- Throws:
ClassFormatException
-
dump
public void dump(DataOutputStream file) throws IOException
Dump constant pool to file stream in binary format.- Parameters:
file
- Output file stream- Throws:
IOException
-
getConstant
public Constant getConstant(int index)
Gets constant from constant pool.- Parameters:
index
- Index in constant pool- Returns:
- Constant value
- See Also:
Constant
-
getConstant
public Constant getConstant(int index, byte tag) 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
- See Also:
Constant
-
getConstantString
public String getConstantString(int index, byte tag) throws ClassFormatException
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:
ClassFormatException
- See Also:
ConstantClass
,ConstantString
-
getLength
public int getLength()
- Returns:
- Length of constant pool.
-
setConstant
public void setConstant(int index, Constant constant)
- Parameters:
constant
- Constant to set
-
setConstantPool
public void setConstantPool(Constant[] constantPool)
- Parameters:
constantPool
-
-
toString
public String toString()
-
copy
public ConstantPool copy()
- Returns:
- deep copy of this constant pool
-
-