Интерфейс 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(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>>
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default ClassDesc |
arrayType() |
|
default ClassDesc |
arrayType |
|
default ClassDesc |
componentType() |
Возвращает компонентный тип этого ClassDesc, если он описывает массив, или null в противном случае. |
String |
descriptorString() |
Возвращает строку описателя типа поля для этого типа |
default String |
displayName() |
Возвращает удобочитаемое имя типа, описанного этим описателем. |
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, заданный строкой описателя для класса, интерфейса, массива или примитивного типа. |
default String |
packageName() |
Возвращает имя пакета этого ClassDesc, если он описывает тип класса или интерфейса. |
Методы, объявленные в интерфейсе java.lang.constant.ConstantDesc
resolveConstantDesc
Подробное описание методов
of
static ClassDesc of(String name)
"java.lang.String". (Чтобы создать дескриптор для массива, используйте ofDescriptor(String) или arrayType(); чтобы создать дескриптор для примитивного типа, используйте ofDescriptor(String) или предопределённые константы в ConstantDescs).- Параметры:
-
name- полное имя (разделенное точками) бинарного имени класса - Возвращает:
- ClassDesc, описывающий требуемый класс
- Исключения:
-
NullPointerException- если аргументnull -
IllegalArgumentException- если строка имени имеет неправильный формат
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
default ClassDesc arrayType()
- Определено в:
-
arrayTypeв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- ClassDesc, описывающий тип массива
- Исключения:
-
IllegalStateException- если результирующий ClassDesc будет иметь ранг массива больше 255 - См. Спецификацию виртуальной машины Java:
- 4.4.1 Структура CONSTANT_Class_info
arrayType
default 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
default boolean isClassOrInterface()
- Возвращает:
- описывает ли этот ClassDesc тип класса или интерфейса
componentType
default ClassDesc componentType()
null в противном случае.- Определено в:
-
componentTypeв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- ClassDesc, описывающий тип компонента, или
nullесли этот дескриптор не описывает массив
packageName
default String packageName()
- Возвращает:
- имя пакета, или пустую строку, если класс в основном пакете, или этот ClassDesc не описывает тип класса или интерфейса
displayName
default String displayName()
- Требования к реализации:
Стандартная реализация возвращает простое имя (например,
int) для примитивных типов, простое имя класса для типов классов или интерфейсов, или имя отображения типа компонента, дополненное соответствующим количеством пар[]для типов массивов.- Возвращает:
- удобочитаемое имя
descriptorString
String descriptorString()
- Указано в:
-
descriptorStringв интерфейсеTypeDescriptor - Возвращает:
- строку-описатель
- См. Спецификацию виртуальной машины Java:
- 4.3.2 Описатели полей
equals
boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является ClassDesc и оба описывают один и тот же тип.- Переопределяет:
-
equalsв классеObject - Параметры:
-
o- другой объект - Возвращает:
- является ли этот описатель равным другому объекту
- См. также:
© 1993, 2021, 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/17/docs/api/java.base/java/lang/constant/ClassDesc.html