# Interface FieldTransform

All Superinterfaces:
  `ClassFileTransform<FieldTransform, FieldElement, FieldBuilder>`

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 FieldTransform extends ClassFileTransform<FieldTransform, FieldElement, FieldBuilder>
A transformation on streams of `FieldElement`.

Refer to `ClassFileTransform` for general guidance and caution around the use of transforms for structures in the `class` file format.

A field transform can be lifted to a class transform via `ClassTransform.transformingFields(FieldTransform)`, transforming only the `FieldModel` among the class members and passing all other elements to the builders.

Since:
  24
See Also:
  - `FieldModel`
  - `ClassBuilder.transformField(FieldModel, FieldTransform)`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final FieldTransform`
`ACCEPT_ALL`
A field transform that passes all elements to the builder.

## Method Summary

Modifier and Type
Method
Description
`default FieldTransform`
`andThen(FieldTransform t)`
Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.
`static FieldTransform`
`dropping(Predicate<FieldElement> filter)`
Creates a field transform that passes each element through to the builder, except for those that the supplied `Predicate` is true for.
`static FieldTransform`
`endHandler(Consumer<FieldBuilder> finisher)`
Creates a field transform that passes each element through to the builder, and calls the specified function when transformation is complete.
`static FieldTransform`
`ofStateful(Supplier<FieldTransform> supplier)`
Creates a stateful field transform from a `Supplier`.

### Methods declared in interface ClassFileTransform

`accept, atEnd, atStart`
Modifier and Type
Method
Description
`void`
`accept(FieldBuilder builder, FieldElement element)`
Transform an element by taking the appropriate actions on the builder.
`default void`
`atEnd(FieldBuilder builder)`
Take any final action during transformation of a classfile entity.
`default void`
`atStart(FieldBuilder builder)`
Take any preliminary action during transformation of a classfile entity.

## Field Details

### ACCEPT_ALL

static final FieldTransform ACCEPT_ALL
A field transform that passes all elements to the builder.

## Method Details

### ofStateful

static FieldTransform ofStateful(Supplier<FieldTransform> supplier)
Creates a stateful field 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 field transform

### endHandler

static FieldTransform endHandler(Consumer<FieldBuilder> finisher)
Creates a field 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 field transform

### dropping

static FieldTransform dropping(Predicate<FieldElement> filter)
Creates a field transform that passes each element through to the builder, except for those that the supplied `Predicate` is true for.

Parameters:
  `filter` - the predicate that determines which elements to drop
Returns:
  the field transform

### andThen

default FieldTransform andThen(FieldTransform 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.

This method is implemented by the Class-File API. Users usually don't have sufficient access to Class-File API functionalities to override this method correctly for generic downstream transforms.

Specified by:
  `andThen` in interface `ClassFileTransform<FieldTransform, FieldElement, FieldBuilder>`
Implementation Requirements:
  The default implementation returns this field transform chained with another field 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