Spec-Zone.ru › OpenJDK 21

Интерфейс ClassDesc

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

Для стандартных типов системы, включая все примитивные типы, существуют предопределённые константы ClassDesc в ConstantDescs. (В API java.lang.constant 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>>

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

Модификатор и тип Метод Описание
default ClassDesc arrayType()
Возвращает ClassDesc для массива, тип компонента которого описан этим ClassDesc.
default ClassDesc arrayType(int rank)
Возвращает ClassDesc для массива заданного ранга, тип компонента которого описан этим ClassDesc.
default ClassDesc componentType()
Возвращает тип компонента этого ClassDesc, если он описывает тип массива, или null в противном случае.
String descriptorString()
Возвращает строку описания типа поля для этого типа
default String displayName()
Возвращает удобочитаемое имя типа, описанного этим дескриптором.
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 - полное квалифицированное (разделенное точкой) имя двоичного класса
Возвращает:
a 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 - полное имя класса, в внутреннем (разделенном слешами) формате
Возвращает:
a ClassDesc описывающий желаемый класс
Использует:
NullPointerException - если аргумент null
IllegalArgumentException - если строка имени не в правильном формате
См. Спецификацию Java Virtual Machine:
4.2.1 Имена двоичных классов и интерфейсов
С:
20
См. также:
  • of(String)
  • ofDescriptor(String)

of

static ClassDesc of(String packageName, String className)
Возвращает ClassDesc для типа класса или интерфейса, заданного именем пакета и неквалифицированным (простым) именем класса или интерфейса.
Параметры:
packageName - имя пакета (разделенное точкой); если имя пакета пустая строка, класс считается находящимся в безымянном пакете
className - неквалифицированное (простое) имя класса
Возвращает:
a 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 - строка дескриптора поля
Возвращает:
a ClassDesc, описывающий желаемый класс
Использует:
NullPointerException - если аргумент null
IllegalArgumentException - если строка дескриптора не в правильном формате
См. Спецификацию Java Virtual Machine:
4.3.2 Дескрипторы полей
4.4.1 Структура CONSTANT_Class_info
См. также:
  • of(String)
  • ofInternalName(String)

arrayType

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

arrayType

default ClassDesc arrayType(int rank)
Возвращает ClassDesc для типа массива указанного ранга, тип компонента которого описывается этим ClassDesc.
Параметры:
rank - ранг массива
Возвращает:
a ClassDesc описывающий тип массива
Использует:
IllegalArgumentException - если ранг меньше или равен нулю или если ранг полученного типа массива больше 255
См. Спецификацию Java Virtual Machine:
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 - неквалифицированное имя вложенного класса
Возвращает:
a ClassDesc, описывающий вложенный класс
Использует:
NullPointerException - если аргумент null
IllegalStateException - если этот ClassDesc не описывает тип класса или интерфейса
IllegalArgumentException - если имя вложенного класса некорректно

nested

default ClassDesc nested(String firstNestedName, String... moreNestedNames)
Возвращает ClassDesc для вложенного класса типа класса или интерфейса, описанного этим ClassDesc.
Параметры:
firstNestedName - неквалифицированное имя вложенного класса первого уровня
moreNestedNames - неквалифицированное имя(а) вложенного(ых) классов последующих уровней
Возвращает:
a 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

default String displayName()
Возвращает удобочитаемое имя типа, описываемого этим дескриптором.
Требования к реализации:

Базовая реализация возвращает простое имя (например, int) для примитивных типов, неквалифицированное имя класса для типов класса или интерфейса или имя отображения типа компонента с присоединёнными соответствующим количеством пар [] для типов массивов.

Возвращает:
удобочитаемое имя

descriptorString

String descriptorString()
Возвращает строку-дескриптор типа поля для этого типа
Задано в:
descriptorString в интерфейсе TypeDescriptor
Возвращает:
строка-дескриптор
См. Спецификацию Java Virtual Machine:
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 - если класс, метод или поле не смогли быть рефлективно решены в процессе разрешения

equals

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

© 1993, 2023, 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/21/docs/api/java.base/java/lang/constant/ClassDesc.html

Spec-Zone.ru

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