org.apache.bcel.classfile

Class ConstantPool

public class ConstantPool extends Object implements Cloneable, Node, Serializable

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
ConstantPool(Constant[] constant_pool)
Method Summary
voidaccept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.
StringconstantToString(Constant c)
Resolve constant to a string representation.
StringconstantToString(int index, byte tag)
Retrieve constant at `index' from constant pool and resolve it to a string representation.
ConstantPoolcopy()
voiddump(DataOutputStream file)
Dump constant pool to file stream in binary format.
ConstantgetConstant(int index)
Get constant from constant pool.
ConstantgetConstant(int index, byte tag)
Get constant from constant pool and check whether it has the expected type.
Constant[]getConstantPool()
StringgetConstantString(int index, byte tag)
Get string from constant pool and bypass the indirection of `ConstantClass' and `ConstantString' objects.
intgetLength()
voidsetConstant(int index, Constant constant)
voidsetConstantPool(Constant[] constant_pool)
StringtoString()

Constructor Detail

ConstantPool

public ConstantPool(Constant[] constant_pool)

Parameters: constant_pool Array of constants

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.

Parameters: v Visitor object

constantToString

public String constantToString(Constant c)
Resolve constant to a string representation.

Parameters: c Constant to be printed

Returns: String representation

constantToString

public String constantToString(int index, byte tag)
Retrieve constant at `index' from constant pool and resolve it to a string representation.

Parameters: index of constant in constant pool tag expected type

Returns: String representation

copy

public ConstantPool copy()

Returns: deep copy of this constant pool

dump

public void dump(DataOutputStream file)
Dump constant pool to file stream in binary format.

Parameters: file Output file stream

Throws: IOException

getConstant

public Constant getConstant(int index)
Get constant from constant pool.

Parameters: index Index in constant pool

Returns: Constant value

See Also: Constant

getConstant

public Constant getConstant(int index, byte tag)
Get constant from constant pool and check whether it has the expected type.

Parameters: index Index in constant pool tag Tag of expected constant, i.e., its type

Returns: Constant value

Throws: ClassFormatException

See Also: Constant

getConstantPool

public Constant[] getConstantPool()

Returns: Array of constants.

See Also: Constant

getConstantString

public String getConstantString(int index, byte tag)
Get 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 pool tag 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[] constant_pool)

Parameters: constant_pool

toString

public String toString()

Returns: String representation.