Интерфейс ClassDesc
- Все суперинтерфейсы:
-
ConstantDesc,TypeDescriptor,TypeDescriptor.OfField<ClassDesc>
public sealed interface ClassDesc extends ConstantDesc, TypeDescriptor.OfField<ClassDesc>
Class. Для стандартных типов системы, включая все примитивные типы, существуют предопределённые константы ClassDesc в ConstantDescs. (В 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 по строке дескриптора класса, интерфейса, массива или примитивного типа. |
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- полное квалифицированное (разделенное точкой) имя двоичного класса - Возвращает:
- a ClassDesc, описывающий желаемый класс
- Использует:
-
NullPointerException- если аргументnull -
IllegalArgumentException- если строка имени не в правильном формате - См. также:
ofInternalName
static ClassDesc ofInternalName(String name)
"java/lang/String".- Примечание API:
- Для создания дескриптора для массива используйте
ofDescriptor(String)илиarrayType(); для создания дескриптора для примитивного типа используйтеofDescriptor(String)или предопределенные константы вConstantDescs. - Параметры:
-
name- полное имя класса, в внутреннем (разделенном слешами) формате - Возвращает:
- a ClassDesc описывающий желаемый класс
- Использует:
-
NullPointerException- если аргументnull -
IllegalArgumentException- если строка имени не в правильном формате - См. Спецификацию Java Virtual Machine:
- 4.2.1 Имена двоичных классов и интерфейсов
- С:
- 20
- См. также:
of
static ClassDesc of(String packageName, String className)
- Параметры:
-
packageName- имя пакета (разделенное точкой); если имя пакета пустая строка, класс считается находящимся в безымянном пакете -
className- неквалифицированное (простое) имя класса - Возвращает:
- a 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- строка дескриптора поля - Возвращает:
- a ClassDesc, описывающий желаемый класс
- Использует:
-
NullPointerException- если аргументnull -
IllegalArgumentException- если строка дескриптора не в правильном формате - См. Спецификацию Java Virtual Machine:
- 4.3.2 Дескрипторы полей
4.4.1 Структура CONSTANT_Class_info
- См. также:
arrayType
default ClassDesc arrayType()
- Определено в:
-
arrayTypeв интерфейсеTypeDescriptor.OfField<ClassDesc> - Возвращает:
- a ClassDesc описывающий тип массива
- Использует:
-
IllegalStateException- если полученный ClassDesc будет иметь ранг массива больше 255 - См. Спецификацию Java Virtual Machine:
- 4.4.1 Структура CONSTANT_Class_info
arrayType
default ClassDesc arrayType(int rank)
- Параметры:
-
rank- ранг массива - Возвращает:
- a ClassDesc описывающий тип массива
- Использует:
-
IllegalArgumentException- если ранг меньше или равен нулю или если ранг полученного типа массива больше 255 - См. Спецификацию Java Virtual Machine:
- 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- неквалифицированное имя вложенного класса - Возвращает:
- a ClassDesc, описывающий вложенный класс
- Использует:
-
NullPointerException- если аргументnull -
IllegalStateException- если этот ClassDesc не описывает тип класса или интерфейса -
IllegalArgumentException- если имя вложенного класса некорректно
nested
default ClassDesc nested(String firstNestedName, String... moreNestedNames)
- Параметры:
-
firstNestedName- неквалифицированное имя вложенного класса первого уровня -
moreNestedNames- неквалифицированное имя(а) вложенного(ых) классов последующих уровней - Возвращает:
- a 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 Virtual Machine:
- 4.3.2 Описания полей
resolveConstantDesc
Class<?> resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
ConstantDescMethodHandles.Lookup. Кэширование результирующего значения не выполняется.- Задано в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup-MethodHandles.Lookupдля предоставления контекста разрешения имён и контроля доступа - Возвращает:
- результирующее значение константы
- Выбрасывает:
-
ReflectiveOperationException- если класс, метод или поле не смогли быть рефлективно решены в процессе разрешения
equals
boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является ClassDesc и оба описывают один и тот же тип.- Переопределяет:
-
equalsв классеObject - Параметры:
-
o- другой объект - Возвращает:
- равен ли этот дескриптор другому объекту
- См. также:
© 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