org.apache.bcel.generic

## Class InvokeInstruction

- java.lang.Object
- - org.apache.bcel.generic.Instruction
  - - org.apache.bcel.generic.CPInstruction
    - - org.apache.bcel.generic.FieldOrMethod
      - - org.apache.bcel.generic.InvokeInstruction

- All Implemented Interfaces:
    Cloneable, ExceptionThrower, IndexedInstruction, LoadClass, StackConsumer, StackProducer, TypedInstruction
  Direct Known Subclasses:
    INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL

      public abstract class InvokeInstruction
      extends FieldOrMethod
      implements ExceptionThrower, StackConsumer, StackProducer

  Super class for the INVOKExxx family of instructions.

- - ### Field Summary

    - ### Fields inherited from class org.apache.bcel.generic.CPInstruction

      `index`

    - ### Fields inherited from class org.apache.bcel.generic.Instruction

      `length, opcode`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `InvokeInstruction(short opcode, int index)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `consumeStack(ConstantPoolGen cpg)` Also works for instructions whose stack effect depends on the constant pool entry they reference.
    `Type[]` | `getArgumentTypes(ConstantPoolGen cpg)`
    `String` | `getClassName(ConstantPoolGen cpg)` This overrides the deprecated version as we know here that the referenced class may legally be an array.
    `String` | `getMethodName(ConstantPoolGen cpg)`
    `Type` | `getReturnType(ConstantPoolGen cpg)`
    `Type` | `getType(ConstantPoolGen cpg)` Returns the type associated with this instruction.
    `int` | `produceStack(ConstantPoolGen cpg)` Also works for instructions whose stack effect depends on the constant pool entry they reference.
    `String` | `toString(ConstantPool cp)`

    - ### Methods inherited from class org.apache.bcel.generic.FieldOrMethod

      `getClassType, getLoadClassType, getName, getReferenceType, getSignature`

    - ### Methods inherited from class org.apache.bcel.generic.CPInstruction

      `dump, getIndex, initFromFile, setIndex, toString`

    - ### Methods inherited from class org.apache.bcel.generic.Instruction

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

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

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

    - ### Methods inherited from interface org.apache.bcel.generic.ExceptionThrower

      `getExceptions`

- - ### Constructor Detail

    - #### InvokeInstruction

          protected InvokeInstruction(short opcode,
                                      int index)

      Parameters:
        `index` - to constant pool

  - ### Method Detail

    - #### consumeStack

          public int consumeStack(ConstantPoolGen cpg)

      Also works for instructions whose stack effect depends on the constant pool entry they reference.
      Specified by:
        `consumeStack` in interface `StackConsumer`
      Overrides:
        `consumeStack` in class `Instruction`
      Returns:
        Number of words consumed from stack by this instruction

    - #### getArgumentTypes

          public Type[] getArgumentTypes(ConstantPoolGen cpg)

      Returns:
        argument types of referenced method.

    - #### getClassName

          public String getClassName(ConstantPoolGen cpg)

      This overrides the deprecated version as we know here that the referenced class may legally be an array.
      Overrides:
        `getClassName` in class `FieldOrMethod`
      Returns:
        name of the referenced class/interface
      Throws:
        `IllegalArgumentException` - if the referenced class is an array (this should not happen)

    - #### getMethodName

          public String getMethodName(ConstantPoolGen cpg)

      Returns:
        name of referenced method.

    - #### getReturnType

          public Type getReturnType(ConstantPoolGen cpg)

      Returns:
        return type of referenced method.

    - #### 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 method.
      See Also:
        `LoadClass.getLoadClassType(ConstantPoolGen)`

    - #### produceStack

          public int produceStack(ConstantPoolGen cpg)

      Also works for instructions whose stack effect depends on the constant pool entry they reference.
      Specified by:
        `produceStack` in interface `StackProducer`
      Overrides:
        `produceStack` in class `Instruction`
      Returns:
        Number of words produced onto stack by this instruction

    - #### toString

          public String toString(ConstantPool cp)

      Overrides:
        `toString` in class `CPInstruction`
      Returns:
        mnemonic for instruction with symbolic references resolved

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