# 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 java.lang.classfile.Instruction

`opcode, sizeInBytes`

## 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