如何在 Java 9 中建立 VarHandle 的例項?
一般來說,變數控制代碼僅僅是變數的一個型別化引用。它將成為陣列元素、類中的例項或靜態欄位。VarHandle 類可以在特定條件下提供對變數的讀寫訪問。這些是不可變的,並且沒有可見的條件。此外,它們不能進行子分類,並且每個 VarHandle 都有一個泛型型別 T,這是此 VarHandle 所表示的每個變數的型別。VarHandle 的目標是定義一個標準,以便在欄位和陣列元素上呼叫 java.util.concurrent.atomic 和 sun.misc.Unsafe 操作的等效項。
在下例中,我們可使用 MethodHandle.lookup() 方法建立 VarHandle 例項。
示例
import java.lang.invoke.VarHandle; import java.lang.invoke.MethodHandles; public class VarHandleInstanceTest { public static void main(String args[]) { try { VarHandle fieldHandle = MethodHandles.lookup().in(Student.class).findVarHandle(Student.class, "studentId", int.class); System.out.println("VarHandle instance created successfully!!!"); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } } } // Stundent class class Student { protected int studentId; private String[] marks; public Student() { studentId = 0 ; marks = new String[] {"75" , "85" , "95"} ; } }
輸出
VarHandle instance created successfully!!!
廣告