# Interface TableSwitchInstruction

All Superinterfaces:
  `ClassFileElement, CodeElement, Instruction`

public sealed interface TableSwitchInstruction extends Instruction
Models a `tableswitch` instruction in the `code` array of a `Code` attribute. Delivered as a `CodeElement` when traversing the elements of a `CodeModel`.

A table switch instruction is composite:

    TableSwitchInstruction(
        int lowValue,
        int highValue,
        Label defaultTarget,
        List<SwitchCase> cases
    )

When read from `class` files, the `cases` may omit cases that duplicate the default target. The list is sorted ascending by the `caseValue`.

When writing to `class` file, the order in the `cases` list does not matter, as there is only one valid order in the physical representation of table switch entries. Treatment of elements in `cases` whose value is less than `lowValue` or greater than `highValue`, and elements whose value duplicates that of another, is not specified.

See Java Virtual Machine Specification:
  6.5.tableswitch tableswitch
Since:
  24
See Also:
  - `Opcode.Kind.TABLE_SWITCH`
  - `CodeBuilder::tableswitch`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<SwitchCase>`
  `cases()`
  Returns the cases of the switch.
  `Label`
  `defaultTarget()`
  Returns the default target of the switch.
  `int`
  `highValue()`
  Returns the high value of the switch target range, inclusive.
  `int`
  `lowValue()`
  Returns the low value of the switch target range, inclusive.
  `static TableSwitchInstruction`
  `of(int lowValue, int highValue, Label defaultTarget, List<SwitchCase> cases)`
  Returns a table switch instruction.

  ### Methods declared in interface Instruction

  `opcode, sizeInBytes`
  Modifier and Type
  Method
  Description
  `Opcode`
  `opcode()`
  Returns the operation of this instruction.
  `int`
  `sizeInBytes()`
  Returns the size in bytes of this instruction.

- ## Method Details

  - ### lowValue

    int lowValue()
    Returns the low value of the switch target range, inclusive.
    Returns:
      the low value of the switch target range, inclusive

  - ### highValue

    int highValue()
    Returns the high value of the switch target range, inclusive.
    Returns:
      the high value of the switch target range, inclusive

  - ### defaultTarget

    Label defaultTarget()
    Returns the default target of the switch.
    Returns:
      the default target of the switch

  - ### cases

    List<SwitchCase> cases()
    Returns the cases of the switch.
    Returns:
      the cases of the switch

  - ### of

    static TableSwitchInstruction of(int lowValue, int highValue, Label defaultTarget, List<SwitchCase> cases)
    Returns a table switch instruction.
    Parameters:
      `lowValue` - the low value of the switch target range, inclusive
      `highValue` - the high value of the switch target range, inclusive
      `defaultTarget` - the default target of the switch
      `cases` - the cases of the switch; duplicate or out of bound case handling is not specified
    Returns:
      a table switch instruction