Package Summary Overview Summary

Module java.base
Package java.lang.classfilePREVIEW

# Interface CodeTransform

All Superinterfaces:
  `ClassFileTransformPREVIEW<CodeTransformPREVIEW, CodeElementPREVIEW, CodeBuilderPREVIEW>`

All Known Subinterfaces:
  `CodeLocalsShifterPREVIEW`, `CodeRelabelerPREVIEW`, `CodeStackTrackerPREVIEW`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public non-sealed interface CodeTransform extends ClassFileTransformPREVIEW<CodeTransformPREVIEW, CodeElementPREVIEW, CodeBuilderPREVIEW>
`CodeTransform` is a preview API of the Java platform.
Programs can only use `CodeTransform` when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A transformation on streams of `CodeElement`PREVIEW.

Since:
  22
See Also:
  - `ClassFileTransform`PREVIEW

- ## Nested Class Summary

  ## Nested classes/interfaces declared in interface java.lang.classfile.ClassFileTransformPREVIEW

  `ClassFileTransform.ResolvedTransformPREVIEW<E extends ClassFileElementPREVIEW>`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final CodeTransformPREVIEW`
  `ACCEPT_ALL`
  A code transform that sends all elements to the builder.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default CodeTransformPREVIEW`
  `andThen (CodeTransformPREVIEW t)`
  Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.
  `static CodeTransformPREVIEW`
  `endHandler (Consumer<CodeBuilderPREVIEW> finisher)`
  Create a code transform that passes each element through to the builder, and calls the specified function when transformation is complete.
  `static CodeTransformPREVIEW`
  `ofStateful (Supplier<CodeTransformPREVIEW> supplier)`
  Create a stateful code transform from a `Supplier`.
  `default ClassFileTransform.ResolvedTransformPREVIEW <CodeElementPREVIEW>`
  `resolve (CodeBuilderPREVIEW builder)`
  Bind a transform to a builder.

  ### Methods declared in interface java.lang.classfile.ClassFileTransformPREVIEW

  `accept, atEnd, atStart`

- ## Field Details

  - ### ACCEPT_ALL

    static final CodeTransformPREVIEW ACCEPT_ALL
    A code transform that sends all elements to the builder.

- ## Method Details

  - ### ofStateful

    static CodeTransformPREVIEW ofStateful (Supplier<CodeTransformPREVIEW> supplier)
    Create a stateful code transform from a `Supplier`. The supplier will be invoked for each transformation.
    Parameters:
      `supplier` - a `Supplier` that produces a fresh transform object for each traversal
    Returns:
      the stateful code transform

  - ### endHandler

    static CodeTransformPREVIEW endHandler (Consumer<CodeBuilderPREVIEW> finisher)
    Create a code transform that passes each element through to the builder, and calls the specified function when transformation is complete.
    Parameters:
      `finisher` - the function to call when transformation is complete
    Returns:
      the code transform

  - ### andThen

    default CodeTransformPREVIEW andThen (CodeTransformPREVIEW t)
    Description copied from interface: `ClassFileTransform`
    Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.
    Specified by:
      `andThen` in interface `ClassFileTransformPREVIEW<CodeTransformPREVIEW, CodeElementPREVIEW, CodeBuilderPREVIEW>`
    Implementation Requirements:
      The default implementation returns this code transform chained with another code transform from the argument. Chaining of two transforms requires to involve a chained builder serving as a target builder for this transform and also as a source of elements for the downstream transform.
    Parameters:
      `t` - the downstream transform
    Returns:
      the chained transform

  - ### resolve

    default ClassFileTransform.ResolvedTransformPREVIEW<CodeElementPREVIEW> resolve (CodeBuilderPREVIEW builder)
    Description copied from interface: `ClassFileTransform`
    Bind a transform to a builder. If the transform is chained, intermediate builders are created for each chain link. If the transform is stateful (see, e.g., `ClassTransform.ofStateful(Supplier)`PREVIEW), the supplier is invoked to get a fresh transform object.

    This method is a low-level method that should rarely be used by user code; most of the time, user code should prefer `ClassFileBuilder.transform(CompoundElement, ClassFileTransform)` PREVIEW, which resolves the transform and executes it on the current builder.

    Specified by:
      `resolve` in interface `ClassFileTransformPREVIEW<CodeTransformPREVIEW, CodeElementPREVIEW, CodeBuilderPREVIEW>`
    Implementation Requirements:
      The default implementation returns a resolved transform bound to the given code builder.
    Parameters:
      `builder` - the builder to bind to
    Returns:
      the bound result