DynamicConstantDesc — 동적 상수 기술자
DynamicConstantDesc — 동적 상수 기술자
DynamicConstantDesc는 동적 상수(dynamic constant)에 대한 명목 기술자입니다. 동적 상수는 상수 풀에서 Constant_Dynamic_info로 표현됩니다. DynamicConstantDesc의 구체적인 하위 타입은 불변이어야 하며, 그 동작이 객체 정체성(identity)에 의존해서는 안 됩니다.
본문
public abstract non-sealed class DynamicConstantDesc<T> extends Object
implements ConstantDesc
생성자
protected DynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
팩토리 메서드
public static <T> ConstantDesc ofCanonical(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs)
public static <T> DynamicConstantDesc<T> ofNamed(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs)
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod)
주요 메서드
public String constantName()
public ClassDesc constantType()
public DirectMethodHandleDesc bootstrapMethod()
public ConstantDesc[] bootstrapArgs()
public List<ConstantDesc> bootstrapArgsList()
public T resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
constantName()과constantType()는 동적 상수의 이름과 타입을 반환합니다.bootstrapMethod()와bootstrapArgs계열은 부트스트랩 메서드와 인자를 반환합니다.resolveConstantDesc는 이 기술자를 실제 상수 값으로 해석합니다.
JDK 내장 타입은 DynamicConstantDesc를 서브클래싱하여 구현됩니다. 예를 들어 Enum.EnumDesc와 VarHandle.VarHandleDesc가 그렇습니다.