# Class FieldInstruction

java.lang.Object
org.apache.bcel.generic.Instruction
org.apache.bcel.generic.CPInstruction
org.apache.bcel.generic.FieldOrMethod
org.apache.bcel.generic.FieldInstruction

All Implemented Interfaces:
  `Cloneable, IndexedInstruction, LoadClass, TypedInstruction`

Direct Known Subclasses:
  `GETFIELD, GETSTATIC, PUTFIELD, PUTSTATIC`

public abstract class FieldInstruction extends FieldOrMethod
Super class for the GET/PUTxxx family of instructions.

- ## Field Summary

  ### Fields inherited from class CPInstruction

  `index`

  ### Fields inherited from class Instruction

  `length, opcode`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FieldInstruction(short opcode, int index)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getFieldName(ConstantPoolGen cpg)`
  `protected int`
  `getFieldSize(ConstantPoolGen cpg)`
  `Type`
  `getFieldType(ConstantPoolGen cpg)`
  `Type`
  `getType(ConstantPoolGen cpg)`
  Returns the type associated with this instruction.
  `String`
  `toString(ConstantPool cp)`

  ### Methods inherited from class FieldOrMethod

  `getClassName, getClassType, getLoadClassType, getName, getReferenceType, getSignature`

  ### Methods inherited from class CPInstruction

  `dump, getIndex, initFromFile, setIndex, toString`

  ### Methods inherited from class Instruction

  `accept, consumeStack, copy, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, produceStack, readInstruction, setComparator, toString`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### FieldInstruction

    protected FieldInstruction(short opcode, int index)
    Parameters:
      `index` - to constant pool

- ## Method Details

  - ### getFieldName

    public String getFieldName(ConstantPoolGen cpg)
    Returns:
      name of referenced field.

  - ### getFieldSize

    protected int getFieldSize(ConstantPoolGen cpg)
    Returns:
      size of field (1 or 2)

  - ### getFieldType

    public Type getFieldType(ConstantPoolGen cpg)
    Returns:
      type of field

  - ### getType

    public Type getType(ConstantPoolGen cpg)
    Description copied from interface: `LoadClass`
    Returns the type associated with this instruction. LoadClass instances are always typed, but this type does not always refer to the type of the class or interface that it possibly forces to load. For example, `GETFIELD` would return the type of the field and not the type of the class where the field is defined. If no class is forced to be loaded, `null` is returned. An example for this is an `NEWARRAY` instruction that creates an `int[][]`.
    Specified by:
      `getType` in interface `LoadClass`
    Specified by:
      `getType` in interface `TypedInstruction`
    Overrides:
      `getType` in class `CPInstruction`
    Parameters:
      `cpg` - A ConstantPoolGen
    Returns:
      return type of referenced field
    See Also:
      - `LoadClass.getLoadClassType(ConstantPoolGen)`

  - ### toString

    public String toString(ConstantPool cp)
    Overrides:
      `toString` in class `CPInstruction`
    Returns:
      mnemonic for instruction with symbolic references resolved