Spec-Zone.ru › OpenJDK 24

Интерфейс ClassDesc

Все суперинтерфейсы:
ConstantDesc, TypeDescriptor, TypeDescriptor.OfField<ClassDesc>
public sealed interface ClassDesc extends ConstantDesc, TypeDescriptor.OfField<ClassDesc>
A номинальный дескриптор для константы Class.

Для общих системных типов, включая все примитивные типы, существуют предопределенные константы ClassDesc в ConstantDescs. (java.lang.constant API рассматривают void как примитивный тип.) Чтобы создать ClassDesc для типа класса или интерфейса, используйте of(java.lang.String) или ofDescriptor(String); чтобы создать ClassDesc для массива, используйте ofDescriptor(String), или сначала получите ClassDesc для типа компонента, а затем вызовите метод arrayType() или arrayType(int).

С:
12
См. также:
  • ConstantDescs

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.invoke.TypeDescriptor

TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>, TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>, M extends TypeDescriptor.OfMethod<F,M>>

Краткое описание методов

Модификатор и тип Метод Описание
ClassDesc arrayType()
Возвращает ClassDesc для типа массива, тип компонента которого описывается этим ClassDesc.
ClassDesc arrayType(int rank)
Возвращает ClassDesc для типа массива указанного ранга, тип компонента которого описывается этим ClassDesc.
default ClassDesc componentType()
Возвращает тип компонента этого ClassDesc, если он описывает массив, или null в противном случае.
String descriptorString()
Возвращает строку дескриптора типа поля для данного типа
String displayName()
Возвращает удобочитаемое имя для этого ClassDesc.
boolean equals(Object o)
Сравнивает указанный объект с этим дескриптором на равенство.
default boolean isArray()
Возвращает, описывает ли этот ClassDesc тип массива.
default boolean isClassOrInterface()
Возвращает, описывает ли этот ClassDesc тип класса или интерфейса.
default boolean isPrimitive()
Возвращает, описывает ли этот ClassDesc примитивный тип.
default ClassDesc nested(String nestedName)
Возвращает ClassDesc для вложенного класса класса или интерфейса, описанного этим ClassDesc.
default ClassDesc nested(String firstNestedName, String... moreNestedNames)
Возвращает ClassDesc для вложенного класса класса или интерфейса, описанного этим ClassDesc.
static ClassDesc of(String name)
Возвращает ClassDesc для типа класса или интерфейса, учитывая имя класса или интерфейса, например, "java.lang.String".
static ClassDesc of(String packageName, String className)
Возвращает ClassDesc для типа класса или интерфейса, учитывая имя пакета и неопределенное (простое) имя класса или интерфейса.
static ClassDesc ofDescriptor(String descriptor)
Возвращает ClassDesc на основе строки дескриптора класса, интерфейса, массива или примитивного типа.
static ClassDesc ofInternalName(String name)
Возвращает ClassDesc для типа класса или интерфейса, учитывая имя класса или интерфейса во внутреннем формате, например, "java/lang/String".
default String packageName()
Возвращает имя пакета этого ClassDesc, если он описывает тип класса или интерфейса.
Class<?> resolveConstantDesc(MethodHandles.Lookup lookup)
Разрешает этот дескриптор рефлексивно, имитируя поведение разрешения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4.

Подробное описание методов

of

static ClassDesc of(String name)
Возвращает ClassDesc для типа класса или интерфейса, заданного именем класса или интерфейса, например "java.lang.String". (Для создания дескриптора для массива используйте ofDescriptor(String) или arrayType(); для создания дескриптора для примитивного типа используйте ofDescriptor(String) или предопределенные константы в ConstantDescs).
Параметры:
name - полное имя двоичного класса (через точки)
Возвращает:
объект ClassDesc, описывающий нужный класс
Исключения:
NullPointerException - если аргумент является null
IllegalArgumentException - если строка имени имеет неправильный формат
См. также:
  • ofDescriptor(String)
  • ofInternalName(String)

ofInternalName

static ClassDesc ofInternalName(String name)
Возвращает ClassDesc для типа класса или интерфейса, заданного именем класса или интерфейса во внутренней форме, например "java/lang/String".
Примечание API:
Для создания дескриптора для массива используйте ofDescriptor(String) или arrayType(); для создания дескриптора для примитивного типа используйте ofDescriptor(String) или предопределенные константы в ConstantDescs.
Параметры:
name - полное имя класса во внутренней (разделенной слешами) форме
Возвращает:
объект ClassDesc, описывающий нужный класс
Исключения:
NullPointerException - если аргумент является null
IllegalArgumentException - если строка имени имеет неправильный формат
См. Спецификацию виртуальной машины Java:
4.2.1 Имена двоичных классов и интерфейсов
С тех пор:
20
См. также:
  • of(String)
  • ofDescriptor(String)

of

static ClassDesc of(String packageName, String className)
Возвращает ClassDesc для типа класса или интерфейса, заданного именем пакета и простым именем класса или интерфейса.
Параметры:
packageName - имя пакета (через точки); если имя пакета пустая строка, класс считается находящимся в безымянном пакете
className - простое имя класса
Возвращает:
объект ClassDesc, описывающий нужный класс
Исключения:
NullPointerException - если любой аргумент является null
IllegalArgumentException - если имя пакета или имя класса имеют неправильный формат

ofDescriptor

static ClassDesc ofDescriptor(String descriptor)
Возвращает ClassDesc, заданный строкой-дескриптором класса, интерфейса, массива или примитивного типа.
Примечание API:
Строка-дескриптор типа поля для типа без массива — это либо однобуквенный код, соответствующий примитивному типу ("J", "I", "C", "S", "B", "D", "F", "Z", "V"), либо буква "L", за которой следует полное имя двоичного класса, за которым следует ";". Строка-дескриптор типа поля для типа массива — это символ "[", за которым следует дескриптор типа компонента. Примеры допустимых строк дескрипторов типа включают "Ljava/lang/String;", "I", "[I", "V", "[Ljava/lang/String;" и т. д. См. JVMS 4.3.2 ("Дескрипторы полей") для получения более подробной информации.
Параметры:
descriptor - строка-дескриптор поля
Возвращает:
объект ClassDesc, описывающий нужный класс
Исключения:
NullPointerException - если аргумент является null
IllegalArgumentException - если строка дескриптора имеет неправильный формат
См. Спецификацию виртуальной машины Java:
4.3.2 Дескрипторы полей
4.4.1 Структура CONSTANT_Class_info
См. также:
  • of(String)
  • ofInternalName(String)

arrayType

ClassDesc arrayType()
Возвращает ClassDesc для типа массива, тип компонента которого описан этим ClassDesc.
Определено в:
arrayType в интерфейсе TypeDescriptor.OfField<ClassDesc>
Возвращает:
объект ClassDesc, описывающий тип массива
Исключения:
IllegalStateException - если у полученного ClassDesc ранг массива больше 255
См. Спецификацию виртуальной машины Java:
4.4.1 Структура CONSTANT_Class_info

arrayType

ClassDesc arrayType(int rank)
Возвращает ClassDesc для типа массива указанного ранга, тип компонента которого описан этим ClassDesc.
Параметры:
rank - ранг массива
Возвращает:
объект ClassDesc, описывающий тип массива
Исключения:
IllegalArgumentException - если ранг меньше или равен нулю или ранг полученного типа массива больше 255
См. Спецификацию виртуальной машины Java:
4.4.1 Структура CONSTANT_Class_info

nested

default ClassDesc nested(String nestedName)
Возвращает ClassDesc для вложенного класса типа класса или интерфейса, описанного этим ClassDesc.
Примечание API:
Пример: если дескриптор d описывает класс java.util.Map, дескриптор для класса java.util.Map.Entry можно получить с помощью d.nested("Entry").
Параметры:
nestedName - простое имя вложенного класса
Возвращает:
объект ClassDesc, описывающий вложенный класс
Исключения:
NullPointerException - если аргумент является null
IllegalStateException - если этот ClassDesc не описывает тип класса или интерфейса
IllegalArgumentException - если имя вложенного класса некорректно

nested

default ClassDesc nested(String firstNestedName, String... moreNestedNames)
Возвращает ClassDesc для вложенного класса типа класса или интерфейса, описанного этим ClassDesc.
Параметры:
firstNestedName - простое имя вложенного класса первого уровня
moreNestedNames - простое(ые) имя(а) вложенного(ых) класса(ов) последующих уровней
Возвращает:
объект ClassDesc, описывающий вложенный класс
Исключения:
NullPointerException - если любой аргумент или его содержимое является null
IllegalStateException - если этот ClassDesc не описывает тип класса или интерфейса
IllegalArgumentException - если имя вложенного класса некорректно

isArray

default boolean isArray()
Возвращает, описывает ли этот ClassDesc тип массива.
Определено в:
isArray в интерфейсе TypeDescriptor.OfField<ClassDesc>
Возвращает:
является ли этот ClassDesc типом массива

isPrimitive

default boolean isPrimitive()
Возвращает, описывает ли этот ClassDesc примитивный тип.
Определено в:
isPrimitive в интерфейсе TypeDescriptor.OfField<ClassDesc>
Возвращает:
описывает ли этот ClassDesc примитивный тип

isClassOrInterface

default boolean isClassOrInterface()
Возвращает, описывает ли этот ClassDesc тип класса или интерфейса.
Returns:
описывает ли этот ClassDesc тип класса или интерфейса

componentType

default ClassDesc componentType()
Возвращает тип компонента этого ClassDesc, если он описывает массивный тип, или null в противном случае.
Specified by:
componentType в интерфейсе TypeDescriptor.OfField<ClassDesc>
Returns:
ClassDesc, описывающий тип компонента, или null, если этот дескриптор не описывает массивный тип

packageName

default String packageName()
Возвращает имя пакета этого ClassDesc, если он описывает тип класса или интерфейса.
Returns:
имя пакета или пустую строку, если класс находится в пакете по умолчанию, или этот ClassDesc не описывает тип класса или интерфейса

displayName

String displayName()
Возвращает удобочитаемое имя для этого ClassDesc. Для примитивных типов этот метод возвращает простое имя (например, int). Для типов классов или интерфейсов этот метод возвращает неопределенное имя класса. Для массивных типов этот метод возвращает удобочитаемое имя типа компонента, дополненное соответствующим количеством [] пар.
Returns:
удобочитаемое имя для этого ClassDesc

descriptorString

String descriptorString()
Возвращает строку-дескриптор типа поля для этого типа
Specified by:
descriptorString в интерфейсе TypeDescriptor
Returns:
строка-дескриптор
См. Спецификацию виртуальной машины Java:
4.3.2 Дескрипторы полей

resolveConstantDesc

Class<?> resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
Описание скопировано из интерфейса: ConstantDesc
Разрешает этот дескриптор рефлексивно, имитируя поведение разрешения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4. Контекст разрешения и контроля доступа предоставляется параметром MethodHandles.Lookup. Кэширование результата не выполняется.
Specified by:
resolveConstantDesc в интерфейсе ConstantDesc
Parameters:
lookup - MethodHandles.Lookup для обеспечения контекста разрешения имени и контроля доступа
Returns:
разрешенное значение константы
Throws:
ReflectiveOperationException - если класс, метод или поле не могли быть рефлексивно разрешены в ходе разрешения
Since:
21

equals

boolean equals(Object o)
Сравнивает указанный объект с этим дескриптором на равенство. Возвращает true, если и только если указанный объект также является ClassDesc и оба описывают один и тот же тип.
Overrides:
equals в классе Object
Parameters:
o - другой объект
Returns:
равен ли этот дескриптор другому объекту
See Also:
  • Object.hashCode()
  • HashMap

© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/constant/ClassDesc.html

Spec-Zone.ru

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