# Interface ArrayStoreInstruction

All Superinterfaces:
  `ClassFileElement, CodeElement, Instruction`

public sealed interface ArrayStoreInstruction extends Instruction
Models an array store instruction in the `code` array of a `Code` attribute. Corresponding opcodes have a kind of `Opcode.Kind.ARRAY_STORE`. Delivered as a `CodeElement` when traversing the elements of a `CodeModel`.

An array store instruction is composite:

    ArrayStoreInstruction(TypeKind typeKind)

where `typeKind` is not `void`, and `boolean` is converted to `byte`.

Since:
  24
See Also:
  - `Opcode.Kind.ARRAY_STORE`
  - `CodeBuilder::arrayStore`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ArrayStoreInstruction`
  `of(Opcode op)`
  Returns an array store instruction.
  `TypeKind`
  `typeKind()`
  Returns the component type of the array.

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

  - ### typeKind

    TypeKind typeKind()
    Returns the component type of the array. The `byte` type store instruction `bastore` also operates on `boolean` arrays, so this never returns `boolean`.
    Returns:
      the component type of the array

  - ### of

    static ArrayStoreInstruction of(Opcode op)
    Returns an array store instruction.
    Parameters:
      `op` - the opcode for the specific type of array store instruction, which must be of kind `Opcode.Kind.ARRAY_STORE`
    Returns:
      an array store instruction
    Throws:
      `IllegalArgumentException` - if the opcode kind is not `Opcode.Kind.ARRAY_STORE`