Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào chúng ta có thể tạo một phiên bản của VarHandle trong Java 9?


Nói chung, Xử lý biến chỉ đơn giản là tham chiếu được nhập vào một biến. Nó sẽ là một mảng phần tử, một trường hợp hoặc tĩnh trường của lớp. VarHandle lớp có thể cung cấp quyền ghi và đọc cho các biến trong các điều kiện cụ thể. Đây là bất biến và không có điều kiện nhìn thấy. Ngoài ra, chúng không thể được phân loại phụ và mỗi VarHandle loại chung chung T , là loại của mỗi biến được đại diện bởi VarHandle này . Mục tiêu của VarHandle là xác định một tiêu chuẩn để gọi các ứng dụng tương đương của java.util.concurrent.atomic sun.misc.Unsafe hoạt động trên các trường và phần tử mảng.

Trong ví dụ dưới đây, chúng ta có thể sử dụng MethodHandle.lookup () để tạo VarHandle ví dụ.

Ví dụ

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"} ;
   }
}

Đầu ra

VarHandle instance created successfully!!!