Spec-Zone.ru › OpenJDK 25

Интерфейс ClassDesc

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

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

Начиная с версии:
12
См. также:
  • ConstantDescs

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

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

TypeDescriptor.OfField<F>, 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 тип класса или интерфейса.
Возвращает:
описывает ли этот ClassDesc тип класса или интерфейса

componentType

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

packageName

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

displayName

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

descriptorString

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

resolveConstantDesc

Class<?> resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
Описание скопировано из интерфейса: ConstantDesc
Разрешает этот дескриптор с помощью рефлексии, имитируя поведение разрешения, заданное в JVMS 5.4.3, и поведение контроля доступа, заданное в JVMS 5.4.4. Контекст разрешения и контроля доступа предоставляется параметром MethodHandles.Lookup. Кэширование полученного значения не выполняется.
Определено в:
resolveConstantDesc в интерфейсе ConstantDesc
Параметры:
lookup — MethodHandles.Lookup, предоставляющий контекст разрешения имён и контроля доступа
Возвращает:
разрешённое значение константы
Вызывает исключение:
ReflectiveOperationException — если класс, метод или поле не удалось разрешить с помощью рефлексии в ходе разрешения
Начиная с версии:
21

equals

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её филиалов в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её филиалы, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/constant/ClassDesc.html

Spec-Zone.ru

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