DynamicConstantDesc — 동적 상수 기술자

DynamicConstantDesc — 동적 상수 기술자

DynamicConstantDesc는 동적 상수(dynamic constant)에 대한 명목 기술자입니다. 동적 상수는 상수 풀에서 Constant_Dynamic_info로 표현됩니다. DynamicConstantDesc의 구체적인 하위 타입은 불변이어야 하며, 그 동작이 객체 정체성(identity)에 의존해서는 안 됩니다.

출처: Java API Reference

본문

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.EnumDescVarHandle.VarHandleDesc가 그렇습니다.

더 알아보기 (Learn more)