Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราจะสร้างอินสแตนซ์ของ VarHandle ใน Java 9 ได้อย่างไร


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