# Interface LocalVariable

All Superinterfaces:
  `ClassFileElement, CodeElement, PseudoInstruction`

public sealed interface LocalVariable extends PseudoInstruction
A pseudo-instruction which models a single entry in the `LocalVariableTable` attribute. Delivered as a `CodeElement` during traversal of the elements of a `CodeModel`, according to the setting of the `ClassFile.DebugElementsOption` option.

A local variable entry is composite:

    LocalVariable(
        int slot,
        String name,
        ClassDesc type,
        Label startScope,
        Label endScope
    )

Where `slot` is within `[0, 65535]`.

Another model, `LocalVariableInfo`, also models a local variable entry; it has no dependency on a `CodeModel` and represents of bci values as `int`s instead of `Label`s, and is used as components of a `LocalVariableTableAttribute`.

API Note:
  `LocalVariable` is used for all local variables in Java source code. If a local variable has a parameterized type, a type argument, or an array type of one of the previous types, a `LocalVariableType` should be created for that local variable as well.
Since:
  24
See Also:
  - `LocalVariableInfo`
  - `CodeBuilder::localVariable`
  - `ClassFile.DebugElementsOption`

## Method Summary

Modifier and Type
Method
Description
`Label`
`endScope()`
Returns the end range of the local variable scope.
`Utf8Entry`
`name()`
Returns the local variable name.
`static LocalVariable`
`of(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)`
Returns a local variable pseudo-instruction.
`static LocalVariable`
`of(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)`
Returns a local variable pseudo-instruction.
`int`
`slot()`
Returns the local variable slot.
`Label`
`startScope()`
Returns the start range of the local variable scope.
`Utf8Entry`
`type()`
Returns the local variable field descriptor string.
`default ClassDesc`
`typeSymbol()`
Returns the local variable type, as a symbolic descriptor.

## Method Details

### slot

int slot()
Returns the local variable slot. The value is within `[0, 65535]`.

Returns:
  the local variable slot

### name

Utf8Entry name()
Returns the local variable name.

Returns:
  the local variable name

### type

Utf8Entry type()
Returns the local variable field descriptor string.

API Note:
  A symbolic descriptor for the type of the local variable is available through `typeSymbol()`.
Returns:
  the local variable field descriptor string

### typeSymbol

default ClassDesc typeSymbol()
Returns the local variable type, as a symbolic descriptor.

Returns:
  the local variable type, as a symbolic descriptor

### startScope

Label startScope()
Returns the start range of the local variable scope.

Returns:
  the start range of the local variable scope

### endScope

Label endScope()
Returns the end range of the local variable scope.

Returns:
  the end range of the local variable scope

### of

static LocalVariable of(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)
Returns a local variable pseudo-instruction. `slot` must be within `[0, 65535]`.

Parameters:
  `slot` - the local variable slot
  `nameEntry` - the local variable name
  `descriptorEntry` - the local variable descriptor
  `startScope` - the start range of the local variable scope
  `endScope` - the end range of the local variable scope
Returns:
  a local variable pseudo-instruction
Throws:
  `IllegalArgumentException` - if `slot` is out of range

### of

static LocalVariable of(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)
Returns a local variable pseudo-instruction. `slot` must be within `[0, 65535]`.

Parameters:
  `slot` - the local variable slot
  `name` - the local variable name
  `descriptor` - the local variable descriptor
  `startScope` - the start range of the local variable scope
  `endScope` - the end range of the local variable scope
Returns:
  a local variable pseudo-instruction
Throws:
  `IllegalArgumentException` - if `slot` is out of range