Variable Handle 是一个变量或者一组变量的引用,包括静态字段、非静态字段和堆数据结构中的外部数组元素。这意味着Variable Handle与现有的Method Handle类似。可以使用java.lang.invoke.VarHandle 类来表示它。我们可以使用java.lang.invoke.MethodHandles.Lookup静态工厂方法来创建Variable Handle 对象。它还可以用于访问数组中的单个元素,以及 byte[] 数组。
public abstract class VarHandle extends Object
import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; import java.util.Arrays; public class VarHandleTest { public static void main(String args[]) { VarHandle varHandle = MethodHandles.arrayElementVarHandle(int[].class); int[] array = new int[5]; printArray(array); varHandle.set(array, 2, 5); printArray(array); System.out.println(varHandle.get(array, 2)); } private static void printArray(int[] array) { System.out.println(Arrays.toString(array)); } }
[0, 0, 0, 0, 0] [0, 0, 5, 0, 0] 5