org.apache.bcel.generic

## Class SWITCH

- java.lang.Object
- - org.apache.bcel.generic.SWITCH

- All Implemented Interfaces:
    CompoundInstruction

      public final class SWITCH
      extends Object
      implements CompoundInstruction

  SWITCH - Branch depending on int value, generates either LOOKUPSWITCH or TABLESWITCH instruction, depending on whether the match values (int[]) can be sorted with no gaps between the numbers.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target)`
    `SWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target, int maxGap)` Template for switch() constructs.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Instruction` | `getInstruction()`
    `InstructionList` | `getInstructionList()`

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

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

- - ### Constructor Detail

    - #### SWITCH

          public SWITCH(int[] match,
                        InstructionHandle[] targets,
                        InstructionHandle target)

    - #### SWITCH

          public SWITCH(int[] match,
                        InstructionHandle[] targets,
                        InstructionHandle target,
                        int maxGap)

      Template for switch() constructs. If the match array can be sorted in ascending order with gaps no larger than maxGap between the numbers, a TABLESWITCH instruction is generated, and a LOOKUPSWITCH otherwise. The former may be more efficient, but needs more space. Note, that the key array always will be sorted, though we leave the original arrays unaltered.
      Parameters:
        `match` - array of match values (case 2: ... case 7: ..., etc.)
        `targets` - the instructions to be branched to for each case
        `target` - the default target
        `maxGap` - maximum gap that may between case branches

  - ### Method Detail

    - #### getInstruction

          public Instruction getInstruction()

    - #### getInstructionList

          public InstructionList getInstructionList()

      Specified by:
        `getInstructionList` in interface `CompoundInstruction`

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