Class ConstantPool

java.lang.Object
org.apache.bcel.classfile.ConstantPool
All Implemented Interfaces:
Cloneable, Node

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:
  • Constructor Details

  • Method Details

    • 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.
      Specified by:
      accept in interface Node
      Parameters:
      v - Visitor object
    • 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 pool
      tag - 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:
    • 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 pool
      tag - Tag of expected constant, i.e., its type
      Returns:
      Constant value
      Throws:
      ClassFormatException
      See Also:
    • getConstantPool

      public Constant[] getConstantPool()
      Returns:
      Array of constants.
      See Also:
    • 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 pool
      tag - Tag of expected constant, either ConstantClass or ConstantString
      Returns:
      Contents of string reference
      Throws:
      ClassFormatException
      See Also:
    • 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()
      Overrides:
      toString in class Object
      Returns:
      String representation.
    • copy

      public ConstantPool copy()
      Returns:
      deep copy of this constant pool