Интерфейс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе 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, |
Сущность, имеющая дескриптор типа метода. Дескрипторы методов, соответствующие JVMS §4.3.3, могут быть описаны номинально с помощью MethodType::describeConstable; в противном случае их нельзя описать номинально. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 в противном случае.- Определено в:
-
componentTypeв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- ClassDesc, описывающий тип компонента, или
null, если этот дескриптор не описывает тип массива
packageName
displayName
String displayName()
ClassDesc. Для примитивных типов этот метод возвращает простое имя (например, int). Для типов класса или интерфейса этот метод возвращает неквалифицированное имя класса. Для типов массива этот метод возвращает понятное человеку имя типа компонента, за которым следует соответствующее число пар [].- Возвращает:
- понятное человеку имя для этого
ClassDesc
descriptorString
String descriptorString()
- Определено в:
-
descriptorStringв интерфейсеTypeDescriptor - Возвращает:
- строку дескриптора
- См. Спецификацию виртуальной машины Java:
- 4.3.2 Дескрипторы полей
resolveConstantDesc
Class<?> resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
ConstantDescMethodHandles.Lookup. Кэширование полученного значения не выполняется.- Указано в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup— объектMethodHandles.Lookup, задающий разрешение имён и контекст контроля доступа - Возвращает:
- разрешённое значение константы
- Вызывает исключение:
-
ReflectiveOperationException— если класс, метод или поле не удалось разрешить с помощью рефлексии в процессе разрешения - С версии:
- 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.