Spec-Zone.ru › OpenJDK 27

Интерфейс 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>
Модификатор и тип Интерфейс Описание
static interface  TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>
Сущность, имеющая дескриптор типа поля.
static interface  TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>, M extends TypeDescriptor.OfMethod<F,M>>
Сущность, имеющая дескриптор типа метода. Дескрипторы методов, соответствующие JVMS §4.3.3, могут быть описаны номинально с помощью MethodType::describeConstable; в противном случае их нельзя описать номинально.

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

Модификатор и тип Метод Описание
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, 2026, 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.

Spec-Zone.ru

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