# Interface ConvertInstruction

All Superinterfaces:
  `ClassFileElement, CodeElement, Instruction`

public sealed interface ConvertInstruction extends Instruction
Models a primitive conversion instruction in the `code` array of a `Code` attribute, such as `i2l`. Corresponding opcodes have a kind of `Opcode.Kind.CONVERT`. Delivered as a `CodeElement` when traversing the elements of a `CodeModel`.

A primitive conversion instruction is composite:

    ConvertInstruction(
        TypeKind fromType,
        TypeKind toType
    )

where these conversions are valid:

- Between `int`, `long`, `float`, and `double`, where `fromType != toType`;
- From `int` to `byte`, `char`, and `short`.

Since:
  24
See Also:
  - `Opcode.Kind.CONVERT`
  - `CodeBuilder::conversion`

## Method Summary

Modifier and Type
Method
Description
`TypeKind`
`fromType()`
Returns the source type to convert from.
`static ConvertInstruction`
`of(Opcode op)`
Returns a conversion instruction.
`static ConvertInstruction`
`of(TypeKind fromType, TypeKind toType)`
Returns a conversion instruction.
`TypeKind`
`toType()`
Returns the destination type to convert to.

### Methods declared in interface Instruction

`opcode, sizeInBytes`

## Method Details

### fromType

TypeKind fromType()
Returns the source type to convert from.

Returns:
  the source type to convert from

### toType

TypeKind toType()
Returns the destination type to convert to.

Returns:
  the destination type to convert to

### of

static ConvertInstruction of(TypeKind fromType, TypeKind toType)
Returns a conversion instruction. Valid conversions are:

- Between `int`, `long`, `float`, and `double`, where `fromType != toType`;
- From `int` to `byte`, `char`, and `short`.

Parameters:
  `fromType` - the type to convert from
  `toType` - the type to convert to
Returns:
  a conversion instruction
Throws:
  `IllegalArgumentException` - if this is not a valid conversion

### of

static ConvertInstruction of(Opcode op)
Returns a conversion instruction.

Parameters:
  `op` - the opcode for the specific type of conversion instruction, which must be of kind `Opcode.Kind.CONVERT`
Returns:
  a conversion instruction
Throws:
  `IllegalArgumentException` - if the opcode kind is not `Opcode.Kind.CONVERT`.