org.objectweb.asm.tree

## Class AbstractInsnNode

- java.lang.Object
- - org.objectweb.asm.tree.AbstractInsnNode

- Direct Known Subclasses:
    FieldInsnNode, FrameNode, IincInsnNode, InsnNode, IntInsnNode, InvokeDynamicInsnNode, JumpInsnNode, LabelNode, LdcInsnNode, LineNumberNode, LookupSwitchInsnNode, MethodInsnNode, MultiANewArrayInsnNode, TableSwitchInsnNode, TypeInsnNode, VarInsnNode

      public abstract class AbstractInsnNode
      extends Object

  A node that represents a bytecode instruction. An instruction can appear at most once in at most one `InsnList` at a time.
  Author:
    Eric Bruneton

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `FIELD_INSN` The type of `FieldInsnNode` instructions.
    `static int` | `FRAME` The type of `FrameNode` "instructions".
    `static int` | `IINC_INSN` The type of `IincInsnNode` instructions.
    `static int` | `INSN` The type of `InsnNode` instructions.
    `static int` | `INT_INSN` The type of `IntInsnNode` instructions.
    `List<TypeAnnotationNode>` | `invisibleTypeAnnotations` The runtime invisible type annotations of this instruction.
    `static int` | `INVOKE_DYNAMIC_INSN` The type of `InvokeDynamicInsnNode` instructions.
    `static int` | `JUMP_INSN` The type of `JumpInsnNode` instructions.
    `static int` | `LABEL` The type of `LabelNode` "instructions".
    `static int` | `LDC_INSN` The type of `LdcInsnNode` instructions.
    `static int` | `LINE` The type of `LineNumberNode` "instructions".
    `static int` | `LOOKUPSWITCH_INSN` The type of `LookupSwitchInsnNode` instructions.
    `static int` | `METHOD_INSN` The type of `MethodInsnNode` instructions.
    `static int` | `MULTIANEWARRAY_INSN` The type of `MultiANewArrayInsnNode` instructions.
    `protected int` | `opcode` The opcode of this instruction.
    `static int` | `TABLESWITCH_INSN` The type of `TableSwitchInsnNode` instructions.
    `static int` | `TYPE_INSN` The type of `TypeInsnNode` instructions.
    `static int` | `VAR_INSN` The type of `VarInsnNode` instructions.
    `List<TypeAnnotationNode>` | `visibleTypeAnnotations` The runtime visible type annotations of this instruction.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractInsnNode(int opcode)` Constructs a new `AbstractInsnNode`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `accept(MethodVisitor cv)` Makes the given code visitor visit this instruction.
    `protected void` | `acceptAnnotations(MethodVisitor mv)` Makes the given visitor visit the annotations of this instruction.
    `abstract AbstractInsnNode` | `clone(Map<LabelNode,LabelNode> labels)` Returns a copy of this instruction.
    `protected AbstractInsnNode` | `cloneAnnotations(AbstractInsnNode insn)` Clones the annotations of the given instruction into this instruction.
    `AbstractInsnNode` | `getNext()` Returns the next instruction in the list to which this instruction belongs, if any.
    `int` | `getOpcode()` Returns the opcode of this instruction.
    `AbstractInsnNode` | `getPrevious()` Returns the previous instruction in the list to which this instruction belongs, if any.
    `abstract int` | `getType()` Returns the type of this instruction.

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

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

- - ### Field Detail

    - #### INSN

          public static final int INSN

      The type of `InsnNode` instructions.
      See Also:
        Constant Field Values

    - #### INT_INSN

          public static final int INT_INSN

      The type of `IntInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### VAR_INSN

          public static final int VAR_INSN

      The type of `VarInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### TYPE_INSN

          public static final int TYPE_INSN

      The type of `TypeInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### FIELD_INSN

          public static final int FIELD_INSN

      The type of `FieldInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### METHOD_INSN

          public static final int METHOD_INSN

      The type of `MethodInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### INVOKE_DYNAMIC_INSN

          public static final int INVOKE_DYNAMIC_INSN

      The type of `InvokeDynamicInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### JUMP_INSN

          public static final int JUMP_INSN

      The type of `JumpInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### LABEL

          public static final int LABEL

      The type of `LabelNode` "instructions".
      See Also:
        Constant Field Values

    - #### LDC_INSN

          public static final int LDC_INSN

      The type of `LdcInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### IINC_INSN

          public static final int IINC_INSN

      The type of `IincInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### TABLESWITCH_INSN

          public static final int TABLESWITCH_INSN

      The type of `TableSwitchInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### LOOKUPSWITCH_INSN

          public static final int LOOKUPSWITCH_INSN

      The type of `LookupSwitchInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### MULTIANEWARRAY_INSN

          public static final int MULTIANEWARRAY_INSN

      The type of `MultiANewArrayInsnNode` instructions.
      See Also:
        Constant Field Values

    - #### FRAME

          public static final int FRAME

      The type of `FrameNode` "instructions".
      See Also:
        Constant Field Values

    - #### LINE

          public static final int LINE

      The type of `LineNumberNode` "instructions".
      See Also:
        Constant Field Values

    - #### opcode

          protected int opcode

      The opcode of this instruction.

    - #### visibleTypeAnnotations

          public List<TypeAnnotationNode> visibleTypeAnnotations

      The runtime visible type annotations of this instruction. This field is only used for real instructions (i.e. not for labels, frames, or line number nodes). This list is a list of `TypeAnnotationNode` objects. May be `null`.

    - #### invisibleTypeAnnotations

          public List<TypeAnnotationNode> invisibleTypeAnnotations

      The runtime invisible type annotations of this instruction. This field is only used for real instructions (i.e. not for labels, frames, or line number nodes). This list is a list of `TypeAnnotationNode` objects. May be `null`.

  - ### Constructor Detail

    - #### AbstractInsnNode

          protected AbstractInsnNode(int opcode)

      Constructs a new `AbstractInsnNode`.
      Parameters:
        `opcode` - the opcode of the instruction to be constructed.

  - ### Method Detail

    - #### getOpcode

          public int getOpcode()

      Returns the opcode of this instruction.
      Returns:
        the opcode of this instruction.

    - #### getType

          public abstract int getType()

      Returns the type of this instruction.
      Returns:
        the type of this instruction, i.e. one the constants defined in this class.

    - #### getPrevious

          public AbstractInsnNode getPrevious()

      Returns the previous instruction in the list to which this instruction belongs, if any.
      Returns:
        the previous instruction in the list to which this instruction belongs, if any. May be `null`.

    - #### getNext

          public AbstractInsnNode getNext()

      Returns the next instruction in the list to which this instruction belongs, if any.
      Returns:
        the next instruction in the list to which this instruction belongs, if any. May be `null`.

    - #### accept

          public abstract void accept(MethodVisitor cv)

      Makes the given code visitor visit this instruction.
      Parameters:
        `cv` - a code visitor.

    - #### acceptAnnotations

          protected final void acceptAnnotations(MethodVisitor mv)

      Makes the given visitor visit the annotations of this instruction.
      Parameters:
        `mv` - a method visitor.

    - #### clone

          public abstract AbstractInsnNode clone(Map<LabelNode,LabelNode> labels)

      Returns a copy of this instruction.
      Parameters:
        `labels` - a map from LabelNodes to cloned LabelNodes.
      Returns:
        a copy of this instruction. The returned instruction does not belong to any `InsnList`.

    - #### cloneAnnotations

          protected final AbstractInsnNode cloneAnnotations(AbstractInsnNode insn)

      Clones the annotations of the given instruction into this instruction.
      Parameters:
        `insn` - the source instruction.
      Returns:
        this instruction.