org.apache.bcel.classfile

## Class LocalVariable

- java.lang.Object
- - org.apache.bcel.classfile.LocalVariable

- All Implemented Interfaces:
    Cloneable, Node, Constants

      public final class LocalVariable
      extends Object
      implements Cloneable, Node, Constants

  This class represents a local variable within a method. It contains its scope, name, signature and index on the method's frame. It is used both to represent an element of the LocalVariableTable as well as an element of the LocalVariableTypeTable. The nomenclature used here may be a bit confusing; while the two items have the same layout in a class file, a LocalVariableTable attribute contains a descriptor_index, not a signature_index. The LocalVariableTypeTable attribute does have a signature_index.
  See Also:
    `for more details on the difference.`, `LocalVariableTable`, `LocalVariableTypeTable`

- - ### Field Summary

    - ### Fields inherited from interface org.apache.bcel.Constants

      `AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocalVariable(int start_pc, int length, int name_index, int signature_index, int index, ConstantPool constant_pool)`
    `LocalVariable(int start_pc, int length, int name_index, int signature_index, int index, ConstantPool constant_pool, int orig_index)`
    `LocalVariable(LocalVariable localVariable)` Initializes from another LocalVariable.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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.
    `LocalVariable` | `copy()`
    `void` | `dump(DataOutputStream dataOutputStream)` Dumps local variable to file stream in binary format.
    `ConstantPool` | `getConstantPool()`
    `int` | `getIndex()`
    `int` | `getLength()`
    `String` | `getName()`
    `int` | `getNameIndex()`
    `int` | `getOrigIndex()`
    `String` | `getSignature()`
    `int` | `getSignatureIndex()`
    `int` | `getStartPC()`
    `void` | `setConstantPool(ConstantPool constant_pool)`
    `void` | `setIndex(int index)`
    `void` | `setLength(int length)`
    `void` | `setNameIndex(int name_index)`
    `void` | `setSignatureIndex(int signature_index)`
    `void` | `setStartPC(int start_pc)`
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### LocalVariable

          public LocalVariable(LocalVariable localVariable)

      Initializes from another LocalVariable. Note that both objects use the same references (shallow copy). Use copy() for a physical copy.
      Parameters:
        `localVariable` - Another LocalVariable.

    - #### LocalVariable

          public LocalVariable(int start_pc,
                               int length,
                               int name_index,
                               int signature_index,
                               int index,
                               ConstantPool constant_pool)

      Parameters:
        `start_pc` - Range in which the variable
        `length` - ... is valid
        `name_index` - Index in constant pool of variable name
        `signature_index` - Index of variable's signature
        `index` - Variable is `index'th local variable on the method's frame
        `constant_pool` - Array of constants

    - #### LocalVariable

          public LocalVariable(int start_pc,
                               int length,
                               int name_index,
                               int signature_index,
                               int index,
                               ConstantPool constant_pool,
                               int orig_index)

      Parameters:
        `start_pc` - Range in which the variable
        `length` - ... is valid
        `name_index` - Index in constant pool of variable name
        `signature_index` - Index of variable's signature
        `index` - Variable is `index'th local variable on the method's frame
        `constant_pool` - Array of constants
        `orig_index` - Variable is `index'th local variable on the method's frame prior to any changes

  - ### 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.
      Specified by:
        `accept` in interface `Node`
      Parameters:
        `v` - Visitor object

    - #### dump

          public void dump(DataOutputStream dataOutputStream)
                    throws IOException

      Dumps local variable to file stream in binary format.
      Parameters:
        `dataOutputStream` - Output file stream
      Throws:
        `IOException` - if an I/O error occurs.
      See Also:
        `FilterOutputStream.out`

    - #### getConstantPool

          public ConstantPool getConstantPool()

      Returns:
        Constant pool used by this object.

    - #### getLength

          public int getLength()

      Returns:
        Variable is valid within getStartPC() .. getStartPC()+getLength()

    - #### getName

          public String getName()

      Returns:
        Variable name.

    - #### getNameIndex

          public int getNameIndex()

      Returns:
        Index in constant pool of variable name.

    - #### getSignature

          public String getSignature()

      Returns:
        Signature.

    - #### getSignatureIndex

          public int getSignatureIndex()

      Returns:
        Index in constant pool of variable signature.

    - #### getIndex

          public int getIndex()

      Returns:
        index of register where variable is stored

    - #### getOrigIndex

          public int getOrigIndex()

      Returns:
        index of register where variable was originally stored

    - #### getStartPC

          public int getStartPC()

      Returns:
        Start of range where the variable is valid

    - #### setConstantPool

          public void setConstantPool(ConstantPool constant_pool)

      Parameters:
        `constant_pool` - Constant pool to be used for this object.

    - #### setLength

          public void setLength(int length)

      Parameters:
        `length` - the length of this local variable

    - #### setNameIndex

          public void setNameIndex(int name_index)

      Parameters:
        `name_index` - the index into the constant pool for the name of this variable

    - #### setSignatureIndex

          public void setSignatureIndex(int signature_index)

      Parameters:
        `signature_index` - the index into the constant pool for the signature of this variable

    - #### setIndex

          public void setIndex(int index)

      Parameters:
        `index` - the index in the local variable table of this variable

    - #### setStartPC

          public void setStartPC(int start_pc)

      Parameters:
        `start_pc` - Specify range where the local variable is valid.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`
      Returns:
        string representation.

    - #### copy

          public LocalVariable copy()

      Returns:
        deep copy of this object

Copyright © 2004–2019 The Apache Software Foundation. All rights reserved.