我正在尝试转换一些使用 Unsafe 对类中的局部变量执行内存访问的代码,并且该代码似乎也使用 Unsafe 来访问数组中的元素。
我有以下代码为单个元素创建 VarHandle,它似乎可以工作。
// where self is a class object, and VarName is the name of the class member
return MethodHandles.privateLookupIn(self, MethodHandles.lookup()).
findVarHandle(self, varName, self);
我还读到您还可以使用 VarHandles 访问数组元素。使用上面的代码,我可以获得对整个数组的引用,但我不能完全弄清楚如何构造 VarHandle 以便我可以使用它来访问数组元素。
我看到 MethodHandle 具有arrayElementVarHandle(int[].class)
返回 VarHandle 的 。也许我需要以某种方式将 VarHandle 转换回 MethodHandle 然后调用arrayElementVarHandle()
它才能做到这一点?