CodeAttribute (Java SE 25 & JDK 25)
Description: declaration: module: java.base, package: java.lang.classfile.attribute, interface: CodeAttribute
Keywords: java.lang.classfile.attribute.CodeAttribute interface

# Interface CodeAttribute

All Superinterfaces:
  `Attribute<CodeAttribute>, AttributedElement, ClassFileElement, CodeModel, CompoundElement<CodeElement>, Iterable<CodeElement>, MethodElement`

public sealed interface CodeAttribute extends Attribute<CodeAttribute>, CodeModel
Models the `Code` attribute (JVMS 4.7.3), which contains the bytecode of this method.

This attribute only appears on methods, and does not permit multiple instances in a method. It has a data dependency on the constant pool.

This attribute was introduced in the Java Platform version 1.0.2, major version 45.

API Note:
  `CodeAttribute` models properties of a `Code` attribute read from `class` files. General `class` file transformation should process and traverse a `CodeModel` in the traversal of a `MethodModel`, to support transformation of `Code` attributes currently being built.
See Java Virtual Machine Specification:
  4.7.3 The `Code` Attribute
Since:
  24
See Also:
  - `Attributes.code()`
  - `CodeModel`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `byte[]`
  `codeArray()`
  Returns the bytes (bytecode) of the code array.
  `int`
  `codeLength()`
  Returns The length of the code array in bytes.
  `int`
  `labelToBci(Label label)`
  Returns the position of the `label` in the `codeArray`.
  `int`
  `maxLocals()`
  Returns the maximum size of the local variable table.
  `int`
  `maxStack()`
  Returns the maximum size of the operand stack.

  ### Methods declared in interface Attribute

  `attributeMapper, attributeName`

  ### Methods declared in interface AttributedElement

  `attributes, findAttribute, findAttributes`

  ### Methods declared in interface CodeModel

  `exceptionHandlers, parent`

  ### Methods declared in interface CompoundElement

  `elementList, elementStream, forEach, iterator, toDebugString`

  ### Methods declared in interface Iterable

  `spliterator`

- ## Method Details

  - ### maxLocals

    int maxLocals()
    Returns the maximum size of the local variable table.
    Returns:
      the maximum size of the local variable table

  - ### maxStack

    int maxStack()
    Returns the maximum size of the operand stack.
    Returns:
      the maximum size of the operand stack

  - ### codeLength

    int codeLength()
    Returns The length of the code array in bytes.
    Returns:
      The length of the code array in bytes

  - ### codeArray

    byte[] codeArray()
    Returns the bytes (bytecode) of the code array.
    Returns:
      the bytes (bytecode) of the code array

  - ### labelToBci

    int labelToBci(Label label)
    Returns the position of the `label` in the `codeArray`. The label represents a cursor pointing at immediately before the returned index into the `code` array.
    Parameters:
      `label` - a marker for a position within this `CodeAttribute`
    Returns:
      the position of the `label` in the `codeArray`
    Throws:
      `IllegalArgumentException` - if the `label` is not from this attribute