Интерфейс ClassDesc
- Все суперинтерфейсы:
-
ConstantDesc,TypeDescriptor,TypeDescriptor.OfField<ClassDesc>
public sealed interface ClassDesc extends ConstantDesc, TypeDescriptor.OfField<ClassDesc>
Class. Для общих системных типов, включая все примитивные типы, существуют предопределенные константы ClassDesc в ConstantDescs. (java.lang.constant API рассматривают void как примитивный тип.) Чтобы создать ClassDesc для типа класса или интерфейса, используйте of(java.lang.String) или ofDescriptor(String); чтобы создать ClassDesc для массива, используйте ofDescriptor(String), или сначала получите ClassDesc для типа компонента, а затем вызовите метод arrayType() или arrayType(int).
- С:
- 12
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе 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 |
arrayType |
|
default ClassDesc |
componentType() |
Возвращает тип компонента этого ClassDesc, если он описывает массив, или null в противном случае. |
String |
descriptorString() |
Возвращает строку дескриптора типа поля для данного типа |
String |
displayName() |
Возвращает удобочитаемое имя для этого ClassDesc. |
boolean |
equals |
Сравнивает указанный объект с этим дескриптором на равенство. |
default boolean |
isArray() |
Возвращает, описывает ли этот ClassDesc тип массива. |
default boolean |
isClassOrInterface() |
Возвращает, описывает ли этот ClassDesc тип класса или интерфейса. |
default boolean |
isPrimitive() |
Возвращает, описывает ли этот ClassDesc примитивный тип. |
default ClassDesc |
nested |
|
default ClassDesc |
nested |
|
static ClassDesc |
of |
Возвращает ClassDesc для типа класса или интерфейса, учитывая имя класса или интерфейса, например, "java.lang.String". |
static ClassDesc |
of |
Возвращает ClassDesc для типа класса или интерфейса, учитывая имя пакета и неопределенное (простое) имя класса или интерфейса. |
static ClassDesc |
ofDescriptor |
Возвращает ClassDesc на основе строки дескриптора класса, интерфейса, массива или примитивного типа. |
static ClassDesc |
ofInternalName |
Возвращает ClassDesc для типа класса или интерфейса, учитывая имя класса или интерфейса во внутреннем формате, например, "java/lang/String". |
default String |
packageName() |
Возвращает имя пакета этого ClassDesc, если он описывает тип класса или интерфейса. |
Class |
resolveConstantDesc |
Подробное описание методов
of
static ClassDesc of(String name)
"java.lang.String". (Для создания дескриптора для массива используйте ofDescriptor(String) или arrayType(); для создания дескриптора для примитивного типа используйте ofDescriptor(String) или предопределенные константы в ConstantDescs).- Параметры:
-
name- полное имя двоичного класса (через точки) - Возвращает:
- объект ClassDesc, описывающий нужный класс
- Исключения:
-
NullPointerException- если аргумент являетсяnull -
IllegalArgumentException- если строка имени имеет неправильный формат - См. также:
ofInternalName
static ClassDesc ofInternalName(String name)
"java/lang/String".- Примечание API:
- Для создания дескриптора для массива используйте
ofDescriptor(String)илиarrayType(); для создания дескриптора для примитивного типа используйтеofDescriptor(String)или предопределенные константы вConstantDescs. - Параметры:
-
name- полное имя класса во внутренней (разделенной слешами) форме - Возвращает:
- объект ClassDesc, описывающий нужный класс
- Исключения:
-
NullPointerException- если аргумент являетсяnull -
IllegalArgumentException- если строка имени имеет неправильный формат - См. Спецификацию виртуальной машины Java:
- 4.2.1 Имена двоичных классов и интерфейсов
- С тех пор:
- 20
- См. также:
of
static ClassDesc of(String packageName, String className)
- Параметры:
-
packageName- имя пакета (через точки); если имя пакета пустая строка, класс считается находящимся в безымянном пакете -
className- простое имя класса - Возвращает:
- объект ClassDesc, описывающий нужный класс
- Исключения:
-
NullPointerException- если любой аргумент являетсяnull -
IllegalArgumentException- если имя пакета или имя класса имеют неправильный формат
ofDescriptor
static ClassDesc ofDescriptor(String descriptor)
- Примечание 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
- См. также:
arrayType
ClassDesc arrayType()
- Определено в:
-
arrayTypeв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- объект ClassDesc, описывающий тип массива
- Исключения:
-
IllegalStateException- если у полученного ClassDesc ранг массива больше 255 - См. Спецификацию виртуальной машины Java:
- 4.4.1 Структура CONSTANT_Class_info
arrayType
ClassDesc arrayType(int rank)
- Параметры:
-
rank- ранг массива - Возвращает:
- объект ClassDesc, описывающий тип массива
- Исключения:
-
IllegalArgumentException- если ранг меньше или равен нулю или ранг полученного типа массива больше 255 - См. Спецификацию виртуальной машины Java:
- 4.4.1 Структура CONSTANT_Class_info
nested
default ClassDesc nested(String nestedName)
- Примечание 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)
- Параметры:
-
firstNestedName- простое имя вложенного класса первого уровня -
moreNestedNames- простое(ые) имя(а) вложенного(ых) класса(ов) последующих уровней - Возвращает:
- объект ClassDesc, описывающий вложенный класс
- Исключения:
-
NullPointerException- если любой аргумент или его содержимое являетсяnull -
IllegalStateException- если этот ClassDesc не описывает тип класса или интерфейса -
IllegalArgumentException- если имя вложенного класса некорректно
isArray
default boolean isArray()
- Определено в:
-
isArrayв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- является ли этот ClassDesc типом массива
isPrimitive
default boolean isPrimitive()
- Определено в:
-
isPrimitiveв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- описывает ли этот ClassDesc примитивный тип
isClassOrInterface
componentType
default ClassDesc componentType()
null в противном случае.- Specified by:
-
componentTypeв интерфейсеTypeDescriptor.OfField<ClassDesc> - Returns:
- ClassDesc, описывающий тип компонента, или
null, если этот дескриптор не описывает массивный тип
packageName
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
ConstantDescMethodHandles.Lookup. Кэширование результата не выполняется.- Specified by:
-
resolveConstantDescв интерфейсеConstantDesc - Parameters:
-
lookup-MethodHandles.Lookupдля обеспечения контекста разрешения имени и контроля доступа - Returns:
- разрешенное значение константы
- Throws:
-
ReflectiveOperationException- если класс, метод или поле не могли быть рефлексивно разрешены в ходе разрешения - Since:
- 21
equals
boolean equals(Object o)
true, если и только если указанный объект также является ClassDesc и оба описывают один и тот же тип.
© 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