โดยทั่วไป ตัวจัดการตัวแปร เป็นเพียงการพิมพ์อ้างอิงถึงตัวแปร มันจะเป็น อาร์เรย์ องค์ประกอบ ตัวอย่าง หรือ คงที่ ฟิลด์ ของชั้นเรียน วาร์แฮนเดิล คลาสสามารถให้การเข้าถึงการเขียนและการอ่านตัวแปรภายใต้เงื่อนไขเฉพาะ สิ่งเหล่านี้ ไม่เปลี่ยนรูป และไม่มีสภาพที่มองเห็นได้ นอกจากนี้ยังไม่สามารถจัดประเภทย่อยได้ และแต่ละ VarHandle มี ประเภททั่วไป ท ซึ่งเป็นประเภทของตัวแปรแต่ละตัวที่แสดงโดย 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!!!