如何在 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!!!
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP