일반적으로 가변 핸들 변수에 대한 단순히 형식화된 참조입니다. 배열 이 됩니다. 요소, 인스턴스 또는 정적 필드 클래스의. VarHandle 클래스는 특정 조건에서 변수에 대한 쓰기 및 읽기 액세스를 제공할 수 있습니다. 이는 불변입니다. 그리고 눈에 보이는 상태가 없습니다. 또한 하위 분류할 수 없으며 각 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!!!