Spec-Zone.ru › OpenJDK 27

Interface ConstantDesc

All Known Subinterfaces:
ClassDesc, DirectMethodHandleDesc, MethodHandleDesc, MethodTypeDesc
public sealed interface ConstantDesc permits ClassDesc, MethodHandleDesc, MethodTypeDesc, Double, DynamicConstantDesc<T>, Float, Integer, Long, String
A nominal descriptor for a loadable constant value, as defined in JVMS §4.4. Such a descriptor can be resolved via resolveConstantDesc(MethodHandles.Lookup) to yield the constant value itself.

Class names in a nominal descriptor, like class names in the constant pool of a classfile, must be interpreted with respect to a particular class loader, which is not part of the nominal descriptor.

Static constants that are expressible natively in the constant pool (String, Integer, Long, Float, and Double) implement ConstantDesc, and serve as nominal descriptors for themselves. Native linkable constants (Class, MethodType, and MethodHandle) have counterpart ConstantDesc types: ClassDesc, MethodTypeDesc, and MethodHandleDesc. Other constants are represented by subtypes of DynamicConstantDesc.

APIs that perform generation or parsing of bytecode are encouraged to use ConstantDesc to describe the operand of an ldc instruction (including dynamic constants), the static bootstrap arguments of dynamic constants and invokedynamic instructions, and other bytecodes or classfile structures that make use of the constant pool.

Constants describing various common constants (such as ClassDesc instances for platform types) can be found in ConstantDescs.

Implementations of ConstantDesc should be immutable and their behavior should not rely on object identity.

Non-platform classes should not implement ConstantDesc directly. Instead, they should extend DynamicConstantDesc (as Enum.EnumDesc and VarHandle.VarHandleDesc do.)

Nominal descriptors should be compared using the Object.equals(Object) method. There is no guarantee that any particular entity will always be represented by the same descriptor instance.

See Java Virtual Machine Specification:
4.4 The Constant Pool
Sealed Class Hierarchy Graph:
Sealed class hierarchy graph for ConstantDescSealed class hierarchy graph for ConstantDesc
Since:
12
See Also:
  • Constable
  • ConstantDescs

Method Summary

Modifier and Type Method Description
Object resolveConstantDesc(MethodHandles.Lookup lookup)
Resolves this descriptor reflectively, emulating the resolution behavior of JVMS §5.4.3 and the access control behavior of JVMS §5.4.4.

Method Details

resolveConstantDesc

Object resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
Resolves this descriptor reflectively, emulating the resolution behavior of JVMS §5.4.3 and the access control behavior of JVMS §5.4.4. The resolution and access control context is provided by the MethodHandles.Lookup parameter. No caching of the resulting value is performed.
API Note:
Some constant descriptors, such as MethodTypeDesc, can represent a value that is not representable by run-time entities. Attempts to resolve these may result in errors.
Parameters:
lookup - The MethodHandles.Lookup to provide name resolution and access control context
Returns:
the resolved constant value
Throws:
ReflectiveOperationException - if a class, method, or field could not be reflectively resolved in the course of resolution
LinkageError - if a linkage error occurs
See Java Virtual Machine Specification:
5.4.3 Resolution
5.4.4 Access Control

Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2026, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API