Constable — 상수화 가능 타입 인터페이스
Constable — 상수화 가능 타입 인터페이스
Constable은 상수화 가능(constable) 타입을 나타냅니다. 상수화 가능 타입은 JVMS 4.4에 설명된 대로 Java 클래스 파일의 상수 풀(constant pool)에 상수로 표현될 수 있고, 그 인스턴스가 자신을 명목적으로 ConstantDesc로 설명할 수 있는 타입입니다.
본문
일부 상수화 가능 타입은 상수 풀에 고유한 표현을 가집니다: String, Integer, Long, Float, Double, Class, MethodType, MethodHandle입니다. String, Integer, Long, Float, Double은 자신의 명목 기술자 역할을 하며, Class, MethodType, MethodHandle은 각각 ClassDesc, MethodTypeDesc, MethodHandleDesc라는 대응 명목 기술자를 가집니다.
다른 참조 타입들도 인스턴스가 명목 형태로 ConstantDesc로 자신을 설명할 수 있다면 상수화 가능할 수 있습니다. 예를 들어 Enum 같은 Java 언어 기능을 지원하는 타입이나 VarHandle 같은 런타임 지원 클래스가 이에 해당합니다.
public interface Constable
메서드
Optional<? extends ConstantDesc> describeConstable()
describeConstable()는 상수화 가능한 타입 인스턴스의 명목 형태를 얻는 데 사용됩니다.Constable이 모든 인스턴스를ConstantDesc형태로 설명할 수 있어야 하는 것은 아닙니다. 이 메서드는 인스턴스에 대한 명목 기술자를 만들 수 없을 때 빈Optional을 반환할 수 있습니다. 예를 들어MethodHandle은 직접 메서드 핸들에 대해서는 명목 기술자를 만들지만, 메서드 핸들 조합기(combinator)로 만들어진 것들에 대해서는 그렇지 않을 수 있습니다.