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