Class Constant

java.lang.Object
EDU.purdue.cs.bloat.reflect.Constant

public final class Constant extends Object
A Constant is used to represent an item in the constant pool of a class.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final byte
    Constant tag for class types.
    static final byte
    Constant tag for double constants.
    static final byte
    Constant tag for field references.
    static final byte
    Constant tag for float constants.
    static final byte
    Constant tag for int, short, byte, char, and boolean constants.
    static final byte
    Constant tag for method references.
    static final byte
    Constant tag for long constants.
    static final byte
    Constant tag for method references.
    static final byte
    Constant tag for holding the name and type of a field or method.
    static final byte
    Constant tag for java.lang.String constants.
    static final byte
    Constant tag for holding the a UTF8 format string.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constant(int tag, Object value)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    equals(Object other)
    Check if an object is equal to this constant.
    int
    Hash the constant.
    final int
    tag()
    Get the tag of the constant.
    Convert the constant to a string.
    final Object
    Get the value of the constant.

    Methods inherited from class Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • CLASS

      public static final byte CLASS
      Constant tag for class types. This is used to reference other classes, such as the superclass, and is used by the checkcast and instanceof instructions. The Fieldref, Methodref and InterfaceMethodref constant types refer to this constant type.
      See Also:
    • FIELD_REF

      public static final byte FIELD_REF
      Constant tag for field references. This is used to reference a field in (possibly) another class. The getfield, putfield, getstatic, and putstatic instructions use this constant type.
      See Also:
    • METHOD_REF

      public static final byte METHOD_REF
      Constant tag for method references. This is used to reference a method in (possibly) another class. The invokevirtual, invokespecial, and invokestatic instructions use this constant type.
      See Also:
    • STRING

      public static final byte STRING
      Constant tag for java.lang.String constants. The actual string value is stored indirectly in a Utf8 constant.
      See Also:
    • INTEGER

      public static final byte INTEGER
      Constant tag for int, short, byte, char, and boolean constants.
      See Also:
    • FLOAT

      public static final byte FLOAT
      Constant tag for float constants.
      See Also:
    • LONG

      public static final byte LONG
      Constant tag for long constants.
      See Also:
    • DOUBLE

      public static final byte DOUBLE
      Constant tag for double constants.
      See Also:
    • INTERFACE_METHOD_REF

      public static final byte INTERFACE_METHOD_REF
      Constant tag for method references. This is used to reference a method in an interface. The invokeinterface instruction uses this constant type.
      See Also:
    • NAME_AND_TYPE

      public static final byte NAME_AND_TYPE
      Constant tag for holding the name and type of a field or method. The Fieldref, Methodref and InterfaceMethodref constant types refer to this constant type.
      See Also:
    • UTF8

      public static final byte UTF8
      Constant tag for holding the a UTF8 format string. The string is used to hold the name and type descriptor for NameandType constants, the class name for Class constants, the string value for String constants.
      See Also:
  • Constructor Details

    • Constant

      public Constant(int tag, Object value)
      Parameters:
      tag - The constant's tag.
      value - The constant's value.
  • Method Details

    • tag

      public final int tag()
      Get the tag of the constant.
      Returns:
      The tag.
    • value

      public final Object value()
      Get the value of the constant.
      Returns:
      The value.
    • hashCode

      public int hashCode()
      Hash the constant.
      Overrides:
      hashCode in class Object
      Returns:
      The hash code.
    • equals

      public boolean equals(Object other)
      Check if an object is equal to this constant.
      Overrides:
      equals in class Object
      Parameters:
      other - The object to compare against.
      Returns:
      true if equal, false if not.
    • toString

      public String toString()
      Convert the constant to a string.
      Overrides:
      toString in class Object
      Returns:
      A string representation of the constant.