# Uses of Class
java.lang.invoke.VarHandle

Packages that use VarHandle
Package
Description
java.lang.invoke
The `java.lang.invoke` package provides low-level primitives for interacting with the Java Virtual Machine.
jdk.incubator.foreign
Classes to support low-level and efficient foreign memory/function access, directly from Java.

- ## Uses of VarHandle in java.lang.invoke

  Methods in java.lang.invoke that return VarHandle
  Modifier and Type
  Method
  Description
  `static VarHandle`
  MethodHandles.`arrayElementVarHandle(Class<?> arrayClass)`
  Produces a VarHandle giving access to elements of an array of type `arrayClass`.
  `static VarHandle`
  ConstantBootstraps.`arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass)`
  Finds a `VarHandle` for an array type.
  `static VarHandle`
  MethodHandles.`byteArrayViewVarHandle(Class<?> viewArrayClass, ByteOrder byteOrder)`
  Produces a VarHandle giving access to elements of a `byte[]` array viewed as if it were a different primitive array type, such as `int[]` or `long[]`.
  `static VarHandle`
  MethodHandles.`byteBufferViewVarHandle(Class<?> viewArrayClass, ByteOrder byteOrder)`
  Produces a VarHandle giving access to elements of a `ByteBuffer` viewed as if it were an array of elements of a different primitive component type to that of `byte`, such as `int[]` or `long[]`.
  `static VarHandle`
  ConstantBootstraps.`fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)`
  Finds a `VarHandle` for an instance field.
  `VarHandle`
  MethodHandles.Lookup.`findStaticVarHandle(Class<?> decl, String name, Class<?> type)`
  Produces a VarHandle giving access to a static field `name` of type `type` declared in a class of type `decl`.
  `VarHandle`
  MethodHandles.Lookup.`findVarHandle(Class<?> recv, String name, Class<?> type)`
  Produces a VarHandle giving access to a non-static field `name` of type `type` declared in a class of type `recv`.
  `static VarHandle`
  ConstantBootstraps.`staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)`
  Finds a `VarHandle` for a static field.
  `VarHandle`
  MethodHandles.Lookup.`unreflectVarHandle(Field f)`
  Produces a VarHandle giving access to a reflected field `f` of type `T` declared in a class of type `R`.
  `abstract VarHandle`
  VarHandle.`withInvokeBehavior()`
  Returns a VarHandle, with access to the same variable(s) as this VarHandle, but whose invocation behavior of access mode methods is adjusted to invoke behavior.
  `abstract VarHandle`
  VarHandle.`withInvokeExactBehavior()`
  Returns a VarHandle, with access to the same variable(s) as this VarHandle, but whose invocation behavior of access mode methods is adjusted to invoke-exact behavior.
  Method parameters in java.lang.invoke with type arguments of type VarHandle
  Modifier and Type
  Method
  Description
  `static VarHandle`
  ConstantBootstraps.`arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass)`
  Finds a `VarHandle` for an array type.
  `static VarHandle`
  ConstantBootstraps.`fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)`
  Finds a `VarHandle` for an instance field.
  `static VarHandle`
  ConstantBootstraps.`staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)`
  Finds a `VarHandle` for a static field.

- ## Uses of VarHandle in jdk.incubator.foreign

  Methods in jdk.incubator.foreign that return VarHandle
  Modifier and Type
  Method
  Description
  `static VarHandle`
  MemoryHandles.`asAddressVarHandle(VarHandle target)`
  Adapt an existing var handle into a new var handle whose carrier type is `MemorySegment`.
  `static VarHandle`
  MemoryHandles.`asUnsigned(VarHandle target, Class<?> adaptedType)`
  Adapts a target var handle by narrowing incoming values and widening outgoing values, to and from the given type, respectively.
  `static VarHandle`
  MemoryHandles.`collectCoordinates(VarHandle target, int pos, MethodHandle filter)`
  Adapts a target var handle handle by pre-processing a sub-sequence of its coordinate values with a filter (a method handle).
  `static VarHandle`
  MemoryHandles.`dropCoordinates(VarHandle target, int pos, Class<?>... valueTypes)`
  Returns a var handle which will discard some dummy coordinates before delegating to the target var handle.
  `static VarHandle`
  MemoryHandles.`filterCoordinates(VarHandle target, int pos, MethodHandle... filters)`
  Adapts a target var handle by pre-processing incoming coordinate values using unary filter functions.
  `static VarHandle`
  MemoryHandles.`filterValue(VarHandle target, MethodHandle filterToTarget, MethodHandle filterFromTarget)`
  Adapts a target var handle by pre-processing incoming and outgoing values using a pair of filter functions.
  `static VarHandle`
  MemoryHandles.`insertCoordinates(VarHandle target, int pos, Object... values)`
  Provides a target var handle with one or more bound coordinates in advance of the var handle's invocation.
  `static VarHandle`
  MemoryHandles.`permuteCoordinates(VarHandle target, List<Class<?>> newCoordinates, int... reorder)`
  Provides a var handle which adapts the coordinate values of the target var handle, by re-arranging them so that the new coordinates match the provided ones.
  `static VarHandle`
  MemoryHandles.`varHandle(Class<?> carrier, long alignmentBytes, ByteOrder byteOrder)`
  Creates a memory access var handle with the given carrier type, alignment constraint, and byte order.
  `static VarHandle`
  MemoryHandles.`varHandle(Class<?> carrier, ByteOrder byteOrder)`
  Creates a memory access var handle with the given carrier type and byte order.
  `default VarHandle`
  MemoryLayout.`varHandle(Class<?> carrier, MemoryLayout.PathElement... elements)`
  Creates a memory access var handle that can be used to dereference memory at the layout selected by a given layout path, where the path is considered rooted in this layout.
  Methods in jdk.incubator.foreign with parameters of type VarHandle
  Modifier and Type
  Method
  Description
  `static VarHandle`
  MemoryHandles.`asAddressVarHandle(VarHandle target)`
  Adapt an existing var handle into a new var handle whose carrier type is `MemorySegment`.
  `static VarHandle`
  MemoryHandles.`asUnsigned(VarHandle target, Class<?> adaptedType)`
  Adapts a target var handle by narrowing incoming values and widening outgoing values, to and from the given type, respectively.
  `static VarHandle`
  MemoryHandles.`collectCoordinates(VarHandle target, int pos, MethodHandle filter)`
  Adapts a target var handle handle by pre-processing a sub-sequence of its coordinate values with a filter (a method handle).
  `static VarHandle`
  MemoryHandles.`dropCoordinates(VarHandle target, int pos, Class<?>... valueTypes)`
  Returns a var handle which will discard some dummy coordinates before delegating to the target var handle.
  `static VarHandle`
  MemoryHandles.`filterCoordinates(VarHandle target, int pos, MethodHandle... filters)`
  Adapts a target var handle by pre-processing incoming coordinate values using unary filter functions.
  `static VarHandle`
  MemoryHandles.`filterValue(VarHandle target, MethodHandle filterToTarget, MethodHandle filterFromTarget)`
  Adapts a target var handle by pre-processing incoming and outgoing values using a pair of filter functions.
  `static VarHandle`
  MemoryHandles.`insertCoordinates(VarHandle target, int pos, Object... values)`
  Provides a target var handle with one or more bound coordinates in advance of the var handle's invocation.
  `static VarHandle`
  MemoryHandles.`permuteCoordinates(VarHandle target, List<Class<?>> newCoordinates, int... reorder)`
  Provides a var handle which adapts the coordinate values of the target var handle, by re-arranging them so that the new coordinates match the provided ones.