Класс Class<T>
- Параметры типа:
T— тип класса, моделируемого данным объектомClass. Например, типомString.classявляетсяClass<String>. ИспользуйтеClass<?>, если моделируемый класс неизвестен.
- Все реализованные интерфейсы:
Serializable, Constable, TypeDescriptor, TypeDescriptor.OfField<Class<?>>, AnnotatedElement, GenericDeclaration, Type
public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement, TypeDescriptor.OfField<Class<?>>, Constable
Class представляют классы и интерфейсы в работающем приложении Java. Класс перечисления (enum) и класс записи (record) являются разновидностями классов; интерфейс аннотации является разновидностью интерфейсов. Каждый массив также принадлежит классу, который отражается в виде объекта Class, общего для всех массивов с одинаковым типом элементов и количеством измерений. Примитивные типы Java (boolean, byte, char, short,
int, long, float и double), а также ключевое слово void также представлены объектами Class. Класс Class не имеет открытого конструктора. Вместо этого объект Class создается виртуальной машиной Java автоматически, когда класс извлекается из байтов файла class посредством вызова одного из следующих методов:
-
ClassLoader::defineClass -
java.lang.invoke.MethodHandles.Lookup::defineClass -
java.lang.invoke.MethodHandles.Lookup::defineHiddenClass
Методы класса Class раскрывают множество характеристик класса или интерфейса. Большинство характеристик извлекаются из файла class, переданного загрузчиком классов виртуальной машине Java, либо из файла class, переданного в Lookup::defineClass или Lookup::defineHiddenClass. Некоторые характеристики определяются средой загрузки классов во время выполнения, например модуль, возвращаемый методом getModule().
В следующем примере объект Class используется для вывода имени класса объекта:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
} Class для именованного класса или интерфейса (или для void) с помощью литерала класса (JLS §15.8.2). Например: System.out.println("The name of class Foo is: " + Foo.class.getName());
Некоторые методы класса Class показывают, было ли объявление класса или интерфейса в исходном коде Java вложенным в другое объявление. Другие методы описывают положение класса или интерфейса в гнезде. Гнездо — это набор классов и интерфейсов в одном и том же пакете времени выполнения, которые предоставляют взаимный доступ к своим членам private. Такие классы и интерфейсы называются участниками гнезда (JVMS §4.7.29). Один из участников гнезда выступает в роли хоста гнезда (JVMS §4.7.28) и перечисляет других участников, принадлежащих гнезду; каждый из них, в свою очередь, регистрирует его как хост гнезда. Классы и интерфейсы, принадлежащие гнезду, включая его хост, определяются при создании файлов class. Например, компилятор Java обычно регистрирует класс верхнего уровня в качестве хоста гнезда, другими членами которого являются классы и интерфейсы, чьи объявления вложены в объявление класса верхнего уровня.
Если не указано иное, методы этого класса генерируют исключение NullPointerException при вызове с аргументом null или массивом, содержащим null.
Класс или интерфейс, созданный путем вызова
Lookup::defineHiddenClass, является скрытым классом или интерфейсом. Любые виды классов, включая классы перечислений и классы записей, могут быть скрытыми классами; любые виды интерфейсов, включая интерфейсы аннотаций, могут быть скрытыми интерфейсами. Имя скрытого класса или интерфейса не является бинарным именем, что означает следующее: - На скрытый класс или интерфейс нельзя ссылаться из пулов констант других классов и интерфейсов.
- Скрытый класс или интерфейс не может быть описан в номинальной форме с помощью
Class::describeConstable,ClassDesc::ofилиClassDesc::ofDescriptor. - Скрытый класс или интерфейс не может быть обнаружен с помощью
Class::forNameилиClassLoader::loadClass.
Class. Неявно объявленные классы
Как правило, компилятор Java, начиная с исходного файла для неявно объявленного класса, напримерHelloWorld.java, создает одноименный файл class — HelloWorld.class, в котором класс, сохраненный в этом файле class, назван
"HelloWorld", что соответствует базовым именам исходного файла и файла
class. Для объекта Class неявно объявленного класса
HelloWorld методы получения имени и имени типа возвращают результаты, равные "HelloWorld". Простое имя такого неявно объявленного класса — "HelloWorld", а каноническое имя — "HelloWorld".- Начиная с:
- 1.0
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе 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; в противном случае они не могут быть описаны номинально. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Set |
accessFlags() |
Возвращает неизменяемый набор флагов доступа для этого класса, возможно пустой. |
Class |
arrayType() |
Возвращает Class для типа массива, тип компонентов которого описывается данным Class. |
<U> Class |
asSubclass |
Приводит данный объект Class к представлению подкласса класса, представленного указанным объектом класса. |
T |
cast |
Приводит объект к классу или интерфейсу, представленному данным объектом Class. |
Class |
componentType() |
Возвращает тип компонентов этого Class, если он описывает тип массива, или null в противном случае. |
Optional |
describeConstable() |
Возвращает номинальный дескриптор для этого экземпляра, если его можно сконструировать, или пустой Optional, если нельзя. |
String |
descriptorString() |
Возвращает строку дескриптора сущности (класс, интерфейс, массив, примитивный тип или void), представленной данным объектом Class. |
boolean |
desiredAssertionStatus() |
Возвращает статус утверждений (assertion status), который был бы назначен этому классу, если бы он инициализировался в момент вызова данного метода. |
static Class |
forName |
Возвращает Class с заданным бинарным именем в заданном модуле. |
static Class |
forName |
Возвращает объект Class, связанный с классом или интерфейсом с заданным строковым именем. |
static Class |
forName |
Возвращает объект Class, связанный с классом или интерфейсом с заданным строковым именем, используя указанный загрузчик классов. |
static Class |
forPrimitiveName |
Возвращает объект Class, связанный с примитивным типом с заданным именем. |
AnnotatedType[] |
getAnnotatedInterfaces() |
Возвращает массив объектов AnnotatedType, представляющих использование типов для указания суперинтерфейсов сущности, представленной данным объектом Class. |
AnnotatedType |
getAnnotatedSuperclass() |
Возвращает объект AnnotatedType, представляющий использование типа для указания суперкласса сущности, представленной данным объектом
Class. |
<A extends Annotation> |
getAnnotation |
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null. |
Annotation[] |
getAnnotations() |
Возвращает аннотации, которые присутствуют на этом элементе. |
<A extends Annotation> |
getAnnotationsByType |
Возвращает аннотации, которые связаны с этим элементом. |
String |
getCanonicalName() |
Возвращает каноническое имя базового класса, как определено в The Java Language Specification. |
Class<?>[] |
getClasses() |
Возвращает массив, содержащий объекты Class, представляющие все открытые классы и интерфейсы, являющиеся членами класса, представленного данным объектом Class. |
ClassLoader |
getClassLoader() |
Возвращает загрузчик классов для этого класса. |
Class |
getComponentType() |
Возвращает Class, представляющий тип компонентов массива. |
Constructor |
getConstructor |
Возвращает объект Constructor, отражающий указанный открытый конструктор класса, представленного данным объектом Class. |
Constructor<?>[] |
getConstructors() |
Возвращает массив, содержащий объекты Constructor, отражающие все открытые конструкторы класса, представленного данным объектом Class. |
<A extends Annotation> |
getDeclaredAnnotation |
Возвращает аннотацию этого элемента указанного типа, если такая аннотация непосредственно присутствует, иначе null. |
Annotation[] |
getDeclaredAnnotations() |
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. |
<A extends Annotation> |
getDeclaredAnnotationsByType |
Возвращает аннотацию(и) этого элемента для указанного типа, если такие аннотации либо непосредственно присутствуют, либо косвенно присутствуют. |
Class<?>[] |
getDeclaredClasses() |
Возвращает массив объектов Class, отражающих все классы и интерфейсы, объявленные как члены класса, представленного данным объектом Class. |
Constructor |
getDeclaredConstructor |
Возвращает объект Constructor, отражающий указанный конструктор класса, представленного данным объектом Class. |
Constructor<?>[] |
getDeclaredConstructors() |
Возвращает массив объектов Constructor, отражающих все конструкторы, неявно или явно объявленные классом, представленным данным объектом Class. |
Field |
getDeclaredField |
Возвращает объект Field, отражающий указанное объявленное поле класса или интерфейса, представленного данным объектом Class. |
Field[] |
getDeclaredFields() |
Возвращает массив объектов Field, отражающих все поля, объявленные классом или интерфейсом, представленным данным объектом Class. |
Method |
getDeclaredMethod |
Возвращает объект Method, отражающий указанный объявленный метод класса или интерфейса, представленного данным объектом Class. |
Method[] |
getDeclaredMethods() |
Возвращает массив, содержащий объекты Method, отражающие все объявленные методы класса или интерфейса, представленного данным объектом
Class, включая открытые, защищенные, методы с доступом по умолчанию (в пределах пакета) и закрытые методы, но исключая унаследованные методы. |
Class |
getDeclaringClass() |
Если класс или интерфейс, представленный данным объектом Class, является членом другого класса, возвращает объект Class, представляющий класс, в котором он был объявлен. |
Class |
getEnclosingClass() |
Возвращает непосредственно охватывающий класс базового класса. |
Constructor |
getEnclosingConstructor() |
Если этот объект Class представляет локальный или анонимный класс внутри конструктора, возвращает объект Constructor, представляющий непосредственно охватывающий конструктор базового класса. |
Method |
getEnclosingMethod() |
Если этот объект Class представляет локальный или анонимный класс внутри метода, возвращает объект Method, представляющий непосредственно охватывающий метод базового класса. |
T[] |
getEnumConstants() |
Возвращает элементы этого класса перечисления или null, если этот объект Class не представляет класс перечисления. |
Field |
getField |
Возвращает объект Field, отражающий указанное открытое поле-член класса или интерфейса, представленного данным объектом Class. |
Field[] |
getFields() |
Возвращает массив, содержащий объекты Field, отражающие все доступные открытые поля класса или интерфейса, представленного данным объектом Class. |
Type[] |
getGenericInterfaces() |
Возвращает Type, представляющие интерфейсы, непосредственно реализованные классом или интерфейсом, представленным данным объектом Class. |
Type |
getGenericSuperclass() |
Возвращает Type, представляющий непосредственный суперкласс сущности (класс, интерфейс, примитивный тип или void), представленной данным объектом Class. |
Class<?>[] |
getInterfaces() |
Возвращает интерфейсы, непосредственно реализованные классом или интерфейсом, представленным данным объектом Class. |
Method |
getMethod |
Возвращает объект Method, отражающий указанный открытый метод-член класса или интерфейса, представленного данным объектом Class. |
Method[] |
getMethods() |
Возвращает массив, содержащий объекты Method, отражающие все открытые методы класса или интерфейса, представленного данным объектом
Class, включая методы, объявленные данным классом или интерфейсом, и методы, унаследованные от суперклассов и суперинтерфейсов. |
int |
getModifiers() |
Возвращает модификаторы языка Java для этого класса или интерфейса, закодированные в виде целого числа. |
Module |
getModule() |
Возвращает модуль, членом которого является данный класс или интерфейс. |
String |
getName() |
Возвращает имя сущности (класс, интерфейс, массив, примитивный тип или void), представленной данным объектом Class. |
Class |
getNestHost() |
Возвращает хост гнезда (nest host) гнезда, к которому принадлежит класс или интерфейс, представленный данным объектом Class. |
Class<?>[] |
getNestMembers() |
Возвращает массив, содержащий объекты Class, представляющие все классы и интерфейсы, являющиеся членами гнезда, к которому принадлежит класс или интерфейс, представленный данным объектом Class. |
Package |
getPackage() |
Возвращает пакет этого класса. |
String |
getPackageName() |
Возвращает полное имя пакета. |
Class<?>[] |
getPermittedSubclasses() |
Возвращает массив, содержащий объекты Class, представляющие непосредственные суперинтерфейсы или подклассы, которым разрешено расширять или реализовывать данный класс или интерфейс, если он является запечатанным (sealed). |
ProtectionDomain |
getProtectionDomain() |
Возвращает ProtectionDomain этого класса. |
RecordComponent[] |
getRecordComponents() |
Возвращает массив объектов RecordComponent, представляющих все компоненты этой записи (record), или null, если этот класс не является классом записи. |
URL |
getResource |
Находит ресурс с заданным именем. |
InputStream |
getResourceAsStream |
Находит ресурс с заданным именем. |
Object[] |
getSigners() |
Возвращает лиц, подписавших этот класс (signers). |
String |
getSimpleName() |
Возвращает простое имя базового класса, как указано в исходном коде. |
Class |
getSuperclass() |
Возвращает Class, представляющий непосредственный суперкласс сущности (класс, интерфейс, примитивный тип или void), представленной данным Class. |
String |
getTypeName() |
Возвращает информативную строку для имени этого класса или интерфейса. |
TypeVariable<Class<T>>[] |
getTypeParameters() |
Возвращает массив объектов TypeVariable, представляющих переменные типа, объявленные универсальным объявлением, представленным данным объектом GenericDeclaration, в порядке объявления. |
boolean |
isAnnotation() |
Возвращает true, если этот объект Class представляет интерфейс аннотации. |
boolean |
isAnnotationPresent |
Возвращает true, если аннотация указанного типа присутствует на этом элементе, иначе false. |
boolean |
isAnonymousClass() |
Возвращает true тогда и только тогда, когда базовый класс является анонимным классом. |
boolean |
isArray() |
Определяет, представляет ли данный объект Class класс массива. |
boolean |
isAssignableFrom |
Определяет, совпадает ли класс или интерфейс, представленный данным объектом Class, с классом или интерфейсом, представленным указанным параметром Class, или является ли он его суперклассом или суперинтерфейсом. |
boolean |
isEnum() |
Возвращает true тогда и только тогда, когда этот класс был объявлен как enum в исходном коде. |
boolean |
isHidden() |
Возвращает true тогда и только тогда, когда базовый класс является скрытым классом. |
boolean |
isInstance |
Определяет, совместим ли указанный Object по присваиванию с объектом, представленным данным Class. |
boolean |
isInterface() |
Определяет, представляет ли данный объект Class тип интерфейса. |
boolean |
isLocalClass() |
Возвращает true тогда и только тогда, когда базовый класс является локальным классом. |
boolean |
isMemberClass() |
Возвращает true тогда и только тогда, когда базовый класс является классом-членом. |
boolean |
isNestmateOf |
Определяет, является ли данный Class сочленом по гнезду (nestmate) класса или интерфейса, представленного данным объектом Class. |
boolean |
isPrimitive() |
Определяет, представляет ли данный объект Class примитивный тип или void. |
boolean |
isRecord() |
Возвращает true тогда и только тогда, когда этот класс является классом записи (record). |
boolean |
isSealed() |
Возвращает true тогда и только тогда, когда этот объект Class представляет запечатанный класс или интерфейс. |
boolean |
isSynthetic() |
Возвращает true тогда и только тогда, когда для этого класса установлен бит модификатора synthetic. |
T |
newInstance() |
Устарело. Этот метод распространяет любое исключение, выброшенное конструктором без аргументов, включая проверяемые исключения. |
String |
toGenericString() |
Возвращает строку, описывающую этот Class, включая информацию о модификаторах, статусе sealed/
non-sealed и параметрах типа. |
String |
toString() |
Преобразует объект в строку. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, "равен" ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, для удаления: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в будущем выпуске. |
final Class |
getClass() |
Возвращает класс времени выполнения для этого Object. |
int |
hashCode() |
Возвращает значение хэш-кода для этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Приводит к тому, что текущий поток ожидает, пока он не будет разбужен, обычно посредством уведомления или прерывания. |
final void |
wait |
Приводит к тому, что текущий поток ожидает, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечет определенное количество реального времени. |
final void |
wait |
Приводит к тому, что текущий поток ожидает, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечет определенное количество реального времени. |
Подробное описание методов
toString
public String toString()
getName. Если этот объект Class представляет примитивный тип, данный метод возвращает имя примитивного типа. Если этот объект Class представляет void, данный метод возвращает "void". Если этот объект Class представляет тип массива, данный метод возвращает "class ", за которым следует getName.toGenericString
public String toGenericString()
Class, включая информацию о модификаторах, статусе sealed/
non-sealed и параметрах типа. Строка отформатирована как список модификаторов типа, если таковые имеются, за которым следует разновидность типа (пустая строка для примитивных типов и соответственно class, enum, interface, @interface или record), затем имя типа, затем заключённый в угловые скобки разделенный запятыми список параметров типа (если они есть), включая информативные границы параметров типа (если они есть). Для отделения модификаторов друг от друга и отделения любых модификаторов от разновидности типа используется пробел. Модификаторы следуют в каноническом порядке. Если параметры типа отсутствуют, список параметров типа опускается. Для типа массива строка начинается с имени типа, за которым следует заключённый в угловые скобки разделенный запятыми список параметров типа (если они есть), за которым следует последовательность символов [], по одной паре скобок на каждое измерение массива. Обратите внимание, что поскольку генерируется информация о представлении типа во время выполнения, могут присутствовать модификаторы, отсутствующие в исходном коде или недопустимые в исходном коде.
- Возвращает:
- строку с описанием этого объекта
Class, включая информацию о модификаторах и параметрах типа - Начиная с версии:
- 1.8
forName
public static Class<?> forName(String className) throws ClassNotFoundException
Class, связанный с классом или интерфейсом с заданным строковым именем. Вызов этого метода эквивалентен: Class.forName(className, true, currentLoader)
currentLoader обозначает определяющий загрузчик классов текущего класса. Например, следующий фрагмент кода возвращает объект Class времени выполнения для класса с именем java.lang.Thread:
Class<?> t = Class.forName("java.lang.Thread");
Вызов forName("X") приводит к инициализации класса с именем X.
В случаях, когда этот метод вызывается из контекста, в котором в стеке отсутствует фрейм вызывающей стороны (например, при прямом вызове из потока, подключенного через JNI), используется системный загрузчик классов.
- Параметры:
-
className- бинарное имя класса или строка, представляющая тип массива - Возвращает:
- объект
Classдля класса с указанным именем. - Исключения:
-
LinkageError- если связывание завершается неудачно -
ExceptionInInitializerError- если инициализация, вызванная этим методом, завершается неудачно -
ClassNotFoundException- если класс не удается найти - См. Спецификацию языка Java:
- 12.2 Loading of Classes and Interfaces
12.3 Linking of Classes and Interfaces
12.4 Initialization of Classes and Interfaces
forName
public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
Class, связанный с классом или интерфейсом с заданным строковым именем, используя указанный загрузчик классов. При указании бинарного имени класса или интерфейса этот метод пытается найти и загрузить этот класс или интерфейс. Для загрузки класса или интерфейса используется указанный загрузчик классов. Если параметр loader равен null, класс загружается через базовый (bootstrap) загрузчик классов. Класс инициализируется только в том случае, если параметр initialize равен true и если он не был инициализирован ранее. Этот метод нельзя использовать для получения каких-либо объектов Class, представляющих примитивные типы или void, скрытые классы или интерфейсы, а также классы массивов, типом элементов которых является скрытый класс или интерфейс. Если name обозначает примитивный тип или void, например I, то вместо этого будет предпринята попытка найти пользовательский класс в безымянном пакете с именем I. Чтобы получить объект Class для именованного примитивного типа, такого как int или long, используйте forPrimitiveName(String).
Чтобы получить объект Class, связанный с классом массива, имя состоит из одного или нескольких символов '[', представляющих глубину вложенности массива, за которыми следует тип элемента, закодированный в соответствии с таблицей, указанной в Class.getName().
Примеры:
Class<?> threadClass = Class.forName("java.lang.Thread", false, currentLoader);
Class<?> stringArrayClass = Class.forName("[Ljava.lang.String;", false, currentLoader);
Class<?> intArrayClass = Class.forName("[[[I", false, currentLoader); // Class of int[][][]
Class<?> nestedClass = Class.forName("java.lang.Character$UnicodeBlock", false, currentLoader);
Class<?> fooClass = Class.forName("Foo", true, currentLoader);
Вызов getName() для объекта Class, возвращенного из forName(N), возвращает N.
Вызов forName("[LN;") приводит к загрузке, но не инициализации типа элемента с именем N независимо от значения параметра initialize.
- Примечание к API:
- Этот метод генерирует ошибки, связанные с загрузкой, связыванием или инициализацией, как указано в разделах §12.2, §12.3 и §12.4 Спецификации языка Java. Кроме того, данный метод не проверяет, доступен ли запрошенный класс вызывающей стороне.
- Параметры:
-
name- бинарное имя класса или строка, представляющая класс массива -
initialize- еслиtrue, класс будет инициализирован (что подразумевает связывание). См. раздел §12.4 Спецификации языка Java. -
loader- загрузчик классов, из которого должен быть загружен класс; может бытьnull - Возвращает:
- объект класса, представляющий требуемый класс
- Исключения:
-
LinkageError- если связывание завершается неудачно -
ExceptionInInitializerError- если инициализация, вызванная этим методом, завершается неудачно -
ClassNotFoundException- если класс не удается найти с помощью указанного загрузчика классов - См. Спецификацию языка Java:
- 12.2 Loading of Classes and Interfaces
12.3 Linking of Classes and Interfaces
12.4 Initialization of Classes and Interfaces
13.1 The Form of a Binary
- Начиная с версии:
- 1.2
- См. также:
forName
public static Class<?> forName(Module module, String name)
Class с указанным бинарным именем в заданном модуле. Этот метод пытается найти и загрузить класс или интерфейс. Он не выполняет связывание класса и не запускает инициализатор класса. Если класс не найден, этот метод возвращает null.
Если загрузчик классов заданного модуля определяет другие модули и заданное имя принадлежит классу, определенному в другом модуле, этот метод возвращает null после загрузки класса.
Данный метод не проверяет, доступен ли запрошенный класс вызывающей стороне.
- Примечание к API:
- Этот метод не поддерживает загрузку типов массивов, в отличие от
forName(String, boolean, ClassLoader). Имя класса должно быть бинарным именем. В случае неудачи этот метод возвращаетnullвместо генерации исключенияClassNotFoundException, как это делается методомforName(String, boolean, ClassLoader). - Параметры:
-
module- модуль -
name- бинарное имя класса - Возвращает:
-
объект
Classс заданным именем, определенный в данном модуле;null, если не найден. - Исключения:
-
LinkageError- если связывание завершается неудачно - См. Спецификацию языка Java:
- 12.2 Loading of Classes and Interfaces
12.3 Linking of Classes and Interfaces
- Начиная с версии:
- 9
forPrimitiveName
public static Class<?> forPrimitiveName(String primitiveName)
Class, связанный с примитивным типом с данным именем. Если аргумент не является именем примитивного типа, возвращается
null.- Параметры:
-
primitiveName- имя искомого примитивного типа - Возвращает:
- объект
Class, связанный с примитивным типом с данным именем - См. Спецификацию языка Java:
- 4.2 Primitive Types and Values
15.8.2 Class Literals
- Начиная с версии:
- 22
newInstance
@Deprecated(since="9") public T newInstance() throws InstantiationException, IllegalAccessException
Constructor.newInstance позволяет избежать этой проблемы, оборачивая любое исключение, выброшенное конструктором, в (проверяемое) InvocationTargetException. Вызов
clazz.newInstance()
clazz.getDeclaredConstructor().newInstance()
InvocationTargetException и NoSuchMethodException. Оба этих типа исключений являются подклассами ReflectiveOperationException.Class. Экземпляр класса создается так, как если бы использовалось выражение new с пустым списком аргументов. Класс инициализируется, если он еще не был инициализирован.- Возвращает:
- вновь выделенный экземпляр класса, представленного этим объектом.
- Исключения:
-
IllegalAccessException- если класс или его конструктор без параметров недоступен. -
InstantiationException- если этот объектClassпредставляет абстрактный класс, интерфейс, класс массива, примитивный тип или void; или если у класса нет конструктора без параметров; или если создание экземпляра завершилось неудачей по какой-либо другой причине. -
ExceptionInInitializerError- если инициализация, вызванная этим методом, завершается неудачно.
isInstance
public boolean isInstance(Object obj)
Object по присваиванию с объектом, представленным данным объектом Class. Этот метод является динамическим эквивалентом оператора языка Java instanceof. Метод возвращает true, если указанный аргумент Object не равен null и может быть приведен к ссылочному типу, представленному данным объектом Class, без вызова ClassCastException. В противном случае возвращается false. В частности, если данный объект Class представляет объявленный класс, этот метод возвращает true, если указанный аргумент Object является экземпляром представленного класса (или любого из его подклассов); в противном случае возвращается false. Если данный объект Class представляет класс массива, этот метод возвращает true, если указанный аргумент Object может быть преобразован в объект класса массива с помощью тождественного преобразования или расширяющего ссылочного преобразования; в противном случае возвращается false. Если данный объект Class представляет интерфейс, этот метод возвращает true, если класс или любой суперкласс указанного аргумента Object реализует этот интерфейс; в противном случае возвращается false. Если данный объект Class представляет примитивный тип, этот метод возвращает false.
- Параметры:
-
obj- проверяемый объект; может бытьnull - Возвращает:
- true, если
objявляется экземпляром этого класса - Начиная с версии:
- 1.1
isAssignableFrom
public boolean isAssignableFrom(Class<?> cls)
Class, с классом или интерфейсом, представленным указанным параметром Class, либо является ли он его суперклассом или суперинтерфейсом. Возвращает true, если это так; в противном случае возвращает false. Если данный объект Class представляет примитивный тип, этот метод возвращает true, если указанный параметр Class представляет в точности этот объект Class; в противном случае возвращает false. В частности, этот метод проверяет, может ли тип, представленный указанным параметром Class, быть преобразован в тип, представленный данным объектом Class, с помощью тождественного преобразования или расширяющего ссылочного преобразования. Подробности см. в Спецификации языка Java, разделы §5.1.1 и §5.1.4.
- Параметры:
-
cls- проверяемый объектClass - Возвращает:
- значение
boolean, указывающее, могут ли объекты типаclsбыть присвоены объектам этого класса - Начиная с версии:
- 1.1
isInterface
public boolean isInterface()
Class интерфейсный тип.- Возвращает:
-
true, если этот объектClassпредставляет интерфейс;falseв противном случае.
isArray
public boolean isArray()
Class класс массива.- Указано в:
-
isArrayв интерфейсеTypeDescriptor.OfField<T> - Возвращает:
-
true, если этот объектClassпредставляет класс массива;falseв противном случае. - Начиная с версии:
- 1.1
isPrimitive
public boolean isPrimitive()
Class примитивный тип или void. Существует девять предопределенных объектов Class для представления восьми примитивных типов и void. Они создаются виртуальной машиной Java и имеют те же имена, что и примитивные типы, которые они представляют, а именно: boolean, byte, char, short, int, long, float и double.
Никакие другие объекты классов не считаются примитивными.
- Указано в:
-
isPrimitiveв интерфейсеTypeDescriptor.OfField<T> - Примечание к API:
- К объекту
Class, представляющему примитивный тип, можно получить доступ через переменныеTYPEpublic static final, определенные в классах-обертках примитивных типов, таких какInteger.TYPE. В языке программирования Java на эти объекты можно ссылаться с помощью выражения литерала класса, такого какint.class. ОбъектClassдля void может быть выражен какvoid.classилиVoid.TYPE. - Возвращает:
- true тогда и только тогда, когда этот класс представляет примитивный тип
- См. Спецификацию языка Java:
- 15.8.2 Class Literals
- Начиная с версии:
- 1.1
- См. также:
isAnnotation
public boolean isAnnotation()
Class представляет интерфейс аннотации. Обратите внимание, что если этот метод возвращает true, isInterface() также вернет true, поскольку все интерфейсы аннотаций также являются интерфейсами.- Возвращает:
-
true, если этот объектClassпредставляет интерфейс аннотации;falseв противном случае - Начиная с версии:
- 1.5
isSynthetic
public boolean isSynthetic()
true тогда и только тогда, когда для этого класса установлен бит модификатора synthetic.- Возвращает:
-
trueтогда и только тогда, когда для этого класса установлен бит модификатора synthetic - См. Спецификацию языка Java:
- 13.1 The Form of a Binary
- См. Спецификацию виртуальной машины Java:
- 4.1 The
ClassFileStructure
- Начиная с версии:
- 1.5
- См. также:
getName
public String getName()
Class. Если данный объект Class представляет класс или интерфейс, но не класс массива, то:
- Если класс или интерфейс не является скрытым, возвращается бинарное имя класса или интерфейса.
- Если класс или интерфейс является скрытым, результатом является строка вида:
N + '/' + <suffix>гдеN— это бинарное имя, указанное в файлеclass, переданном вLookup::defineHiddenClass, а<suffix>— неквалифицированное имя.
Если данный объект Class представляет класс массива, то результатом является строка, состоящая из одного или нескольких символов '[', представляющих глубину вложенности массива, за которыми следует тип элемента, закодированный в соответствии со следующей таблицей:
Тип элемента Кодирование booleanZbyteBcharCкласс или интерфейс с бинарным именем N LN;doubleDfloatFintIlongJshortS
Если этот объект Class представляет примитивный тип или void, результатом является строка, написание которой совпадает с ключевым словом языка Java, соответствующим примитивному типу или void.
Примеры:
String.class.getName()
returns "java.lang.String"
Character.UnicodeBlock.class.getName()
returns "java.lang.Character$UnicodeBlock"
byte.class.getName()
returns "byte"
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"
- Примечание к API:
- Различные объекты классов могут иметь одинаковые имена, но разные загрузчики классов.
- Возвращает:
- имя класса, интерфейса или другой сущности, представленной данным объектом
Class. - См. Спецификацию языка Java:
- 13.1 The Form of a Binary
getClassLoader
public ClassLoader getClassLoader()
Если данный объект Class представляет примитивный тип или void, возвращается null.
- Возвращает:
- загрузчик классов, который загрузил класс или интерфейс, представленный данным объектом
Class. - См. также:
getModule
public Module getModule()
Module для типа элемента. Если этот класс представляет примитивный тип или void, возвращается объект Module для модуля java.base. Если данный класс находится в безымянном модуле, возвращается безымянный Module загрузчика классов для этого класса.- Возвращает:
- модуль, членом которого является данный класс или интерфейс
- Начиная с версии:
- 9
getTypeParameters
public TypeVariable<Class<T>>[] getTypeParameters()
TypeVariable, представляющих переменные типа, объявленные обобщенным объявлением, представленным данным объектом GenericDeclaration, в порядке объявления. Возвращает массив нулевой длины, если базовое обобщенное объявление не объявляет переменных типа.- Указано в:
-
getTypeParametersв интерфейсеGenericDeclaration - Возвращает:
- массив объектов
TypeVariable, представляющих переменные типа, объявленные данным обобщенным объявлением - Исключения:
-
GenericSignatureFormatError- если обобщенная сигнатура этого обобщенного объявления не соответствует формату, указанному в разделе §4.7.9 Спецификации виртуальной машины Java - Начиная с версии:
- 1.5
getSuperclass
public Class<? super T> getSuperclass()
Class, представляющий непосредственный суперкласс сущности (класса, интерфейса, примитивного типа или void), представленной данным объектом Class. Если данный объект Class представляет класс Object, интерфейс, примитивный тип или void, возвращается null. Если данный объект Class представляет класс массива, возвращается объект Class, представляющий класс Object.- Возвращает:
- непосредственный суперкласс класса, представленного данным объектом
Class
getGenericSuperclass
public Type getGenericSuperclass()
Type, представляющий прямой суперкласс сущности (класса, интерфейса, примитивного типа или void), представленной данным объектом Class. Если суперкласс является параметризованным типом, возвращаемый объект Type должен точно отражать фактические аргументы типов, используемые в исходном коде. Параметризованный тип, представляющий суперкласс, создается, если он не был создан ранее. Описание семантики процесса создания параметризованных типов см. в объявлении ParameterizedType. Если данный объект Class представляет класс Object, интерфейс, примитивный тип или void, возвращается null. Если данный объект Class представляет класс массива, возвращается объект Class, представляющий класс Object.
- Returns:
- прямой суперкласс класса, представленного данным объектом
Class - Throws:
-
GenericSignatureFormatError- если сигнатура обобщенного класса не соответствует формату, указанному в разделе §4.7.9 спецификации The Java Virtual Machine Specification -
TypeNotPresentException- если обобщенный суперкласс ссылается на несуществующее объявление типа -
MalformedParameterizedTypeException- если обобщенный суперкласс ссылается на параметризованный тип, экземпляр которого не может быть создан по какой-либо причине - Since:
- 1.5
getPackage
public Package getPackage()
Если этот класс представляет тип массива, примитивный тип или void, этот метод возвращает null.
- Returns:
- пакет этого класса.
getPackageName
public String getPackageName()
Если этот класс является классом верхнего уровня, то этот метод возвращает полное имя пакета, членом которого является класс, или пустую строку, если класс находится в безымянном пакете.
Если этот класс является классом-членом, то этот метод эквивалентен вызову getPackageName() для обрамляющего класса.
Если этот класс является локальным классом или анонимным классом, то этот метод эквивалентен вызову getPackageName() для объявляющего класса обрамляющего метода или обрамляющего конструктора.
Если этот класс представляет тип массива, то этот метод возвращает имя пакета типа элементов. Если этот класс представляет примитивный тип или void, то возвращается имя пакета "java.lang".
- Returns:
- полное имя пакета
- See Java Language Specification:
- 6.7 Fully Qualified Names and Canonical Names
- Since:
- 9
getInterfaces
public Class<?>[] getInterfaces()
Class. Если этот объект Class представляет класс, возвращаемым значением является массив, содержащий объекты, представляющие все интерфейсы, непосредственно реализованные этим классом. Порядок объектов интерфейсов в массиве соответствует порядку имен интерфейсов в предложении implements объявления класса, представленного данным объектом Class. Например, для объявления:
class Shimmer implements FloorWax, DessertTopping { ... } предположим, что значением s является экземпляр Shimmer; значение выражения: s.getClass().getInterfaces()[0] является объектом Class, представляющим интерфейс FloorWax; а значение: s.getClass().getInterfaces()[1] является объектом Class, представляющим интерфейс DessertTopping. Если этот объект Class представляет интерфейс, массив содержит объекты, представляющие все интерфейсы, непосредственно расширяемые данным интерфейсом. Порядок объектов интерфейсов в массиве соответствует порядку имен интерфейсов в предложении extends объявления интерфейса, представленного данным объектом Class.
Если этот объект Class представляет класс или интерфейс, который не реализует никаких интерфейсов, метод возвращает массив нулевой длины.
Если этот объект Class представляет примитивный тип или void, метод возвращает массив нулевой длины.
Если этот объект Class представляет тип массива, интерфейсы Cloneable и java.io.Serializable возвращаются именно в таком порядке.
- Returns:
- массив интерфейсов, непосредственно реализованных этим классом
getGenericInterfaces
public Type[] getGenericInterfaces()
Type, представляющие интерфейсы, непосредственно реализованные классом или интерфейсом, представленным данным объектом Class. Если суперинтерфейс является параметризованным типом, возвращаемый для него объект Type должен точно отражать фактические аргументы типов, используемые в исходном коде. Параметризованный тип, представляющий каждый суперинтерфейс, создается, если он не был создан ранее. Описание семантики процесса создания параметризованных типов см. в объявлении ParameterizedType.
Если этот объект Class представляет класс, возвращаемым значением является массив, содержащий объекты, представляющие все интерфейсы, непосредственно реализованные этим классом. Порядок объектов интерфейсов в массиве соответствует порядку имен интерфейсов в предложении implements объявления класса, представленного данным объектом Class.
Если этот объект Class представляет интерфейс, массив содержит объекты, представляющие все интерфейсы, непосредственно расширяемые данным интерфейсом. Порядок объектов интерфейсов в массиве соответствует порядку имен интерфейсов в предложении extends объявления интерфейса, представленного данным объектом Class.
Если этот объект Class представляет класс или интерфейс, который не реализует никаких интерфейсов, метод возвращает массив нулевой длины.
Если этот объект Class представляет примитивный тип или void, метод возвращает массив нулевой длины.
Если этот объект Class представляет тип массива, интерфейсы Cloneable и java.io.Serializable возвращаются именно в таком порядке.
- Returns:
- массив интерфейсов, непосредственно реализованных этим классом
- Throws:
-
GenericSignatureFormatError- если сигнатура обобщенного класса не соответствует формату, указанному в разделе §4.7.9 спецификации The Java Virtual Machine Specification -
TypeNotPresentException- если какой-либо из обобщенных суперинтерфейсов ссылается на несуществующее объявление типа -
MalformedParameterizedTypeException- если какой-либо из обобщенных суперинтерфейсов ссылается на параметризованный тип, экземпляр которого не может быть создан по какой-либо причине - Since:
- 1.5
getComponentType
public Class<?> getComponentType()
Class, представляющий тип компонентов массива. Если этот класс не представляет класс массива, этот метод возвращает null.- Returns:
Class, представляющий тип компонентов этого класса, если данный класс является массивом- Since:
- 1.1
- See Also:
getModifiers
public int getModifiers()
public, protected, private, final, static, abstract и interface; их следует декодировать с помощью методов класса Modifier. Если базовый класс является классом массива:
- его модификаторы
public,privateиprotectedсовпадают с модификаторами его типа компонентов - его модификаторы
abstractиfinalвсегда равныtrue - его модификатор интерфейса всегда равен
false, даже когда тип компонентов является интерфейсом
Class представляет примитивный тип или void, его модификаторы public, abstract и final всегда равны true. Для объектов Class, представляющих void, примитивные типы и массивы, значения остальных модификаторов равны false, если выше не указано иное. Кодировки модификаторов определены в разделе §4.1 спецификации The Java Virtual Machine Specification.
- Returns:
int, представляющий модификаторы для этого класса- See Java Language Specification:
- 8.1.1 Class Modifiers
9.1.1 Interface Modifiers
- See Java Virtual Machine Specification:
- 4.1 The
ClassFileStructure
- Since:
- 1.1
- See Also:
accessFlags
public Set<AccessFlag> accessFlags()
Если базовый класс является классом массива:
- его флаги доступа
PUBLIC,PRIVATEиPROTECTEDсовпадают с флагами его типа компонентов - его флаги
ABSTRACTиFINALприсутствуют - его флаг
INTERFACEотсутствует, даже когда тип компонентов является интерфейсом
Class представляет примитивный тип или void, флагами являются PUBLIC, ABSTRACT и FINAL. Для объектов Class, представляющих void, примитивные типы и массивы, флаги доступа отсутствуют, если выше не указано иное.- Returns:
- неизменяемый набор флагов доступа для этого класса, возможно, пустой
- See Java Virtual Machine Specification:
- 4.1 The ClassFile Structure
4.7.6 The InnerClasses Attribute
- Since:
- 20
- See Also:
getSigners
public Object[] getSigners()
- Returns:
- стороны, подписавшие этот класс, или null, если подписавших сторон нет. В частности, этот метод возвращает null, если этот объект
Classпредставляет примитивный тип или void. - Since:
- 1.1
getEnclosingMethod
public Method getEnclosingMethod()
Class представляет локальный или анонимный класс внутри метода, возвращает объект Method, представляющий непосредственно обрамляющий метод базового класса. В противном случае возвращает null. В частности, этот метод возвращает null, если базовый класс является локальным или анонимным классом, непосредственно обрамленным объявлением класса или интерфейса, инициализатором экземпляра или статическим инициализатором.- Returns:
- непосредственно обрамляющий метод базового класса, если этот класс является локальным или анонимным классом; в противном случае
null. - Since:
- 1.5
getEnclosingConstructor
public Constructor<?> getEnclosingConstructor()
Class представляет локальный или анонимный класс внутри конструктора, возвращает объект Constructor, представляющий непосредственно обрамляющий конструктор базового класса. В противном случае возвращает null. В частности, этот метод возвращает null, если базовый класс является локальным или анонимным классом, непосредственно обрамленным объявлением класса или интерфейса, инициализатором экземпляра или статическим инициализатором.- Returns:
- непосредственно обрамляющий конструктор базового класса, если этот класс является локальным или анонимным классом; в противном случае
null. - Since:
- 1.5
getDeclaringClass
public Class<?> getDeclaringClass()
Class, является членом другого класса, возвращает объект Class, представляющий класс, в котором он был объявлен. Этот метод возвращает null, если этот класс или интерфейс не является членом какого-либо другого класса. Если этот объект Class представляет класс массива, примитивный тип или void, то этот метод возвращает null.- Returns:
- объявляющий класс для этого класса
- Since:
- 1.1
getEnclosingClass
public Class<?> getEnclosingClass()
null.- Returns:
- непосредственно обрамляющий класс базового класса
- Since:
- 1.5
getSimpleName
public String getSimpleName()
$". Простым именем класса массива является простое имя типа компонентов с добавлением "[]". В частности, простое имя класса массива, тип компонентов которого является анонимным, равно "[]".
- Returns:
- простое имя базового класса
- Since:
- 1.5
getTypeName
public String getTypeName()
- Specified by:
-
getTypeNameв интерфейсеType - Returns:
- информативная строка с именем этого класса или интерфейса
- Since:
- 1.8
getCanonicalName
public String getCanonicalName()
null, если базовый класс не имеет канонического имени. Классы без канонических имен включают: - локальный класс
- анонимный класс
- скрытый класс
- массив, тип компонентов которого не имеет канонического имени
byte, short, char, int и так далее). Тип массива имеет каноническое имя тогда и только тогда, когда его тип компонентов имеет каноническое имя. Когда тип массива имеет каноническое имя, оно равно каноническому имени типа компонентов, за которым следует "[]".
- Returns:
- каноническое имя базового класса, если оно существует, и
nullв противном случае. - See Java Language Specification:
- 6.7 Fully Qualified Names and Canonical Names
- Since:
- 1.5
isAnonymousClass
public boolean isAnonymousClass()
true тогда и только тогда, когда базовый класс является анонимным классом.- API Note:
- Анонимный класс не является скрытым классом.
- Returns:
-
trueтогда и только тогда, когда этот класс является анонимным классом. - See Java Language Specification:
- 15.9.5 Anonymous Class Declarations
- Since:
- 1.5
isLocalClass
public boolean isLocalClass()
true тогда и только тогда, когда базовый класс является локальным классом.- Returns:
-
trueтогда и только тогда, когда этот класс является локальным классом. - See Java Language Specification:
- 14.3 Local Class and Interface Declarations
- Since:
- 1.5
isMemberClass
public boolean isMemberClass()
true тогда и только тогда, когда базовый класс является классом-членом.- Returns:
-
trueтогда и только тогда, когда этот класс является классом-членом. - See Java Language Specification:
- 8.5 Member Class and Interface Declarations
- Since:
- 1.5
getClasses
public Class<?>[] getClasses()
Class, представляющие все открытые классы и интерфейсы, являющиеся членами класса, представленного данным объектом Class. Сюда входят открытые классы и интерфейсы-члены, унаследованные от суперклассов, а также открытые классы и интерфейсы-члены, объявленные этим классом. Этот метод возвращает массив нулевой длины, если данный объект Class не имеет открытых классов или интерфейсов-членов. Этот метод также возвращает массив нулевой длины, если данный объект Class представляет примитивный тип, класс массива или void.- Returns:
- массив объектов
Class, представляющих открытые члены этого класса - Since:
- 1.1
getFields
public Field[] getFields()
Field, отражающие все доступные открытые поля класса или интерфейса, представленного данным объектом Class. Если этот объект Class представляет класс или интерфейс без доступных открытых полей, то этот метод возвращает массив нулевой длины.
Если этот объект Class представляет класс, то этот метод возвращает открытые поля класса и всех его суперклассов и суперинтерфейсов.
Если этот объект Class представляет интерфейс, то этот метод возвращает поля этого интерфейса и всех его суперинтерфейсов.
Если этот объект Class представляет тип массива, примитивный тип или void, то этот метод возвращает массив нулевой длины.
Элементы в возвращаемом массиве не отсортированы и не располагаются в каком-либо определенном порядке.
- Returns:
- массив объектов
Field, представляющих открытые поля - See Java Language Specification:
- 8.2 Class Members
8.3 Field Declarations
- Since:
- 1.1
getMethods
public Method[] getMethods()
Method, отражающие все открытые методы класса или интерфейса, представленного данным объектом
Class, включая объявленные классом или интерфейсом и унаследованные от суперклассов и суперинтерфейсов. Если этот объект Class представляет тип массива, то возвращаемый массив содержит объект Method для каждого из открытых методов, унаследованных типом массива от Object. Он не содержит объект Method для clone().
Если этот объект Class представляет интерфейс, то возвращаемый массив не содержит неявно объявленных методов из Object. Поэтому, если в этом интерфейсе или в любом из его суперинтерфейсов методы не объявлены явно, возвращаемый массив имеет нулевую длину. (Обратите внимание, что объект Class, представляющий класс, всегда имеет открытые методы, унаследованные от Object.)
Возвращаемый массив никогда не содержит методы с именами "<init>" или "<clinit>".
Элементы в возвращаемом массиве не отсортированы и не располагаются в каком-либо определенном порядке.
Как правило, результат вычисляется с помощью следующего четырехэтапного алгоритма. Пусть C — класс или интерфейс, представленный данным объектом Class:
- Объединение методов формируется из:
- Объявленных в C открытых методов экземпляра и статических методов, возвращенных методом
getDeclaredMethods()и отфильтрованных так, чтобы включать только открытые методы. - Если C является классом, отличным от
Object, то включается результат рекурсивного вызова этого алгоритма для суперкласса C. - Включаются результаты рекурсивного вызова этого алгоритма для всех прямых суперинтерфейсов C, но включаются только методы экземпляра.
- Объявленных в C открытых методов экземпляра и статических методов, возвращенных методом
- Объединение из шага 1 разбивается на подмножества методов с одинаковой сигнатурой (имя, типы параметров) и типом возвращаемого значения.
- Внутри каждого такого подмножества выбираются только наиболее специфичные методы. Пусть метод M — это метод из набора методов с одинаковой сигнатурой и типом возвращаемого значения. M является наиболее специфичным, если в том же наборе нет такого метода N != M, для которого N более специфичен, чем M. N более специфичен, чем M, если:
- N объявлен классом, а M объявлен интерфейсом; или
- N и M оба объявлены классами или оба интерфейсами, и объявляющий тип N совпадает с объявляющим типом M или является его подтипом (очевидно, если объявляющие типы M и N совпадают, то M и N представляют собой один и тот же метод).
- Результатом этого алгоритма является объединение всех выбранных методов из шага 3.
- API Note:
- В классе может быть более одного метода с определенным именем и типами параметров, поскольку, хотя язык Java запрещает классу объявлять несколько методов с одинаковой сигнатурой, но разными типами возвращаемых значений, виртуальная машина Java этого не запрещает. Эта повышенная гибкость виртуальной машины может использоваться для реализации различных возможностей языка. Например, ковариантные возвращаемые типы могут быть реализованы с помощью мостовых методов (bridge methods); мостовой метод и переопределяющий метод будут иметь одинаковую сигнатуру, но разные типы возвращаемых значений.
- Returns:
- массив объектов
Method, представляющих открытые методы этого класса - See Java Language Specification:
- 8.2 Class Members
8.4 Method Declarations
- Since:
- 1.1
getConstructors
public Constructor<?>[] getConstructors()
Constructor, отражающие все открытые конструкторы класса, представленного данным объектом Class. Возвращается массив нулевой длины, если класс не имеет открытых конструкторов, или если класс является классом массива, или если класс отражает примитивный тип или void.- API Note:
- Хотя этот метод возвращает массив объектов
Constructor<T>(то есть массив конструкторов из этого класса), типом возвращаемого значения этого метода являетсяConstructor<?>[], а неConstructor<T>[], как можно было бы ожидать. Этот менее информативный тип возвращаемого значения необходим, так как после возврата из этого метода массив можно было бы модифицировать для хранения объектовConstructorдля других классов, что нарушило бы гарантии типовConstructor<T>[]. - Returns:
- массив объектов
Constructor, представляющих открытые конструкторы этого класса - Since:
- 1.1
- See Also:
getField
public Field getField(String name) throws NoSuchFieldException
Field, который отражает указанное открытое поле-член класса или интерфейса, представленного этим объектом Class. Параметр name представляет собой String, задающую простое имя нужного поля. Отражаемое поле определяется следующим алгоритмом. Пусть C — класс или интерфейс, представленный этим объектом Class:
- Если C объявляет открытое поле с указанным именем, то это и есть искомое поле.
- Если на шаге 1 поле не найдено, этот алгоритм рекурсивно применяется к каждому прямому суперинтерфейсу класса C. Прямые суперинтерфейсы просматриваются в порядке их объявления.
- Если поле не найдено на шагах 1 и 2, и C имеет суперкласс S, то этот алгоритм рекурсивно вызывается для S. Если у C нет суперкласса, выбрасывается
NoSuchFieldException.
Если этот объект Class представляет тип массива, данный метод не находит поле length типа массива.
- Параметры:
-
name- имя поля - Возвращает:
- объект
Fieldэтого класса, указанный параметромname - Исключения:
-
NoSuchFieldException- если поле с указанным именем не найдено. - См. Спецификацию языка Java:
- 8.2 Члены класса
8.3 Объявления полей
- С версии:
- 1.1
getMethod
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException
Method, который отражает указанный открытый метод-член класса или интерфейса, представленного этим объектом Class. Параметр name представляет собой String, задающую простое имя нужного метода. Параметр parameterTypes представляет собой массив объектов Class, идентифицирующих типы формальных параметров метода в порядке их объявления. Если parameterTypes равен null, он обрабатывается как пустой массив. Если этот объект Class представляет тип массива, данный метод находит любой открытый метод, унаследованный типом массива от Object, кроме метода clone().
Если этот объект Class представляет интерфейс, данный метод не находит неявно объявленных методов из Object. Следовательно, если ни в этом интерфейсе, ни в каком-либо из его суперинтерфейсов методы не объявлены явно, этот метод не найдет ни одного метода.
Этот метод не находит методов с именем "<init>" или "<clinit>".
В общем случае отражаемый метод определяется следующим алгоритмом из 4 шагов. Пусть C — класс или интерфейс, представленный этим объектом Class:
- Формируется объединение методов, состоящее из:
- объявленных в C открытых методов экземпляра и статических методов, возвращаемых методом
getDeclaredMethods()и отфильтрованных для включения только открытых методов, соответствующих указаннымnameиparameterTypes - если C — класс, отличный от
Object, включается результат рекурсивного вызова этого алгоритма для суперкласса C; - включаются результаты рекурсивного вызова этого алгоритма для всех прямых суперинтерфейсов C, но только методов экземпляра.
- объявленных в C открытых методов экземпляра и статических методов, возвращаемых методом
- Это объединение разделяется на подмножества методов с одинаковым типом возвращаемого значения (выбор методов на шаге 1 также гарантирует, что они имеют одинаковые имена и типы параметров).
- Внутри каждого такого подмножества выбираются только наиболее специфичные методы. Пусть метод M — метод из набора методов с одинаковой сигнатурой VM (тип возвращаемого значения, имя, типы параметров). M является наиболее специфичным, если в том же наборе нет такого метода N != M, который более специфичен, чем M. Метод N более специфичен, чем M, если:
- N объявлен классом, а M объявлен интерфейсом; или
- N и M оба объявлены классами или оба объявлены интерфейсами, и объявляющий тип метода N совпадает с объявляющим типом метода M или является его подтипом (очевидно, что если объявляющие типы M и N совпадают, то M и N представляют собой один и тот же метод).
- Результат этого алгоритма выбирается произвольно из методов с наиболее специфичным типом возвращаемого значения среди всех выбранных на шаге 3 методов. Пусть R — тип возвращаемого значения метода M из набора всех выбранных методов на шаге 3. Метод M является методом с наиболее специфичным типом возвращаемого значения, если в том же наборе нет такого метода N != M с типом возвращаемого значения S != R, для которого S является подтипом R, как определено методом R.class.
isAssignableFrom(Class)(S.class).
- Примечание к API:
- В классе может быть более одного метода с совпадающими именем и типами параметров, поскольку хотя язык Java запрещает классу объявлять несколько методов с одинаковой сигнатурой, но разными типами возвращаемого значения, виртуальная машина Java этого не запрещает. Эта повышенная гибкость виртуальной машины может использоваться для реализации различных возможностей языка. Например, ковариантные возвращаемые значения могут быть реализованы с помощью мостовых методов; мостовой метод и переопределяющий метод будут иметь одинаковую сигнатуру, но разные типы возвращаемого значения. Этот метод вернет переопределяющий метод, так как он имеет более специфичный тип возвращаемого значения.
- Параметры:
-
name- имя метода -
parameterTypes- список параметров, может бытьnull - Возвращает:
- объект
Method, соответствующий указаннымnameиparameterTypes - Исключения:
-
NoSuchMethodException- если подходящий метод не найден, еслиparameterTypesсодержитnull, или если имя равно "<init>" либо "<clinit>" - См. Спецификацию языка Java:
- 8.2 Члены класса
8.4 Объявления методов
- С версии:
- 1.1
getConstructor
public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException
Constructor, который отражает указанный открытый конструктор класса, представленного этим объектом Class. Параметр parameterTypes представляет собой массив объектов Class, идентифицирующих типы формальных параметров конструктора в порядке их объявления. Если этот объект Class представляет внутренний класс, объявленный в нестатическом контексте, типы формальных параметров включают явный охватывающий экземпляр в качестве первого параметра. Отражаемым конструктором является открытый конструктор класса, представленного этим объектом Class, чьи типы формальных параметров совпадают с указанными в parameterTypes.
- Параметры:
-
parameterTypes- массив параметров, может бытьnull - Возвращает:
- объект
Constructorоткрытого конструктора, соответствующего указанномуparameterTypes - Исключения:
-
NoSuchMethodException- если подходящий конструктор не найден, если этот объектClassпредставляет интерфейс, примитивный тип, класс массива или void, либо еслиparameterTypesсодержитnull - С версии:
- 1.1
- См. также:
getDeclaredClasses
public Class<?>[] getDeclaredClasses()
Class, отражающих все классы и интерфейсы, объявленные членами класса, представленного этим объектом Class. Сюда входят открытые, защищенные, доступные по умолчанию (в пределах пакета) и закрытые классы и интерфейсы, объявленные классом, но исключаются унаследованные классы и интерфейсы. Этот метод возвращает массив нулевой длины, если класс не объявляет классов или интерфейсов в качестве членов, либо если этот объект Class представляет примитивный тип, класс массива или void.- Возвращает:
- массив объектов
Class, представляющих все объявленные члены этого класса - См. Спецификацию языка Java:
- 8.5 Объявления классов и интерфейсов-членов
- С версии:
- 1.1
getDeclaredFields
public Field[] getDeclaredFields()
Field, отражающих все поля, объявленные классом или интерфейсом, представленным этим объектом Class. Сюда входят открытые, защищенные, доступные по умолчанию (в пределах пакета) и закрытые поля, но исключаются унаследованные поля. Если этот объект Class представляет класс или интерфейс без объявленных полей, этот метод возвращает массив нулевой длины.
Если этот объект Class представляет тип массива, примитивный тип или void, этот метод возвращает массив нулевой длины.
Элементы в возвращаемом массиве не отсортированы и не располагаются в каком-либо определенном порядке.
- Возвращает:
- массив объектов
Field, представляющих все объявленные поля этого класса - См. Спецификацию языка Java:
- 8.2 Члены класса
8.3 Объявления полей
- С версии:
- 1.1
getRecordComponents
public RecordComponent[] getRecordComponents()
RecordComponent, представляющих все компоненты записи этого класса записей, или null, если этот класс не является классом записей. Компоненты возвращаются в том же порядке, в котором они объявлены в заголовке записи. Массив пуст, если у этого класса записей нет компонентов. Если класс не является классом записей, то есть isRecord() возвращает false, данный метод возвращает null. Наоборот, если isRecord() возвращает true, данный метод возвращает непустое (non-null) значение.
- Примечание к API:
-
Следующий метод может использоваться для поиска канонического конструктора записи:
static <T extends Record> Constructor<T> getCanonicalConstructor(Class<T> cls) throws NoSuchMethodException { Class<?>[] paramTypes = Arrays.stream(cls.getRecordComponents()) .map(RecordComponent::getType) .toArray(Class<?>[]::new); return cls.getDeclaredConstructor(paramTypes); } - Возвращает:
- Массив объектов
RecordComponent, представляющих все компоненты записи этого класса записей, илиnull, если этот класс не является классом записей - См. Спецификацию языка Java:
- 8.10 Классы записей
- С версии:
- 16
getDeclaredMethods
public Method[] getDeclaredMethods()
Method, отражающие все объявленные методы класса или интерфейса, представленного этим объектом
Class, включая открытые, защищенные, доступные по умолчанию (в пределах пакета) и закрытые методы, но исключая унаследованные методы. Объявленные методы могут включать методы, которых нет в исходном коде класса или интерфейса, включая мостовые методы и другие синтетические методы, добавленные компиляторами. Если этот объект Class представляет класс или интерфейс, имеющий несколько объявленных методов с одинаковыми именами и типами параметров, но разными типами возвращаемого значения, то возвращаемый массив содержит объект Method для каждого такого метода.
Если этот объект Class представляет класс или интерфейс, имеющий метод инициализации класса "<clinit>", то возвращаемый массив не содержит соответствующего объекта
Method.
Если этот объект Class представляет класс или интерфейс без объявленных методов, возвращаемый массив имеет длину 0.
Если этот объект Class представляет тип массива, примитивный тип или void, возвращаемый массив имеет длину 0.
Элементы в возвращаемом массиве не отсортированы и не располагаются в каком-либо определенном порядке.
- Возвращает:
- массив объектов
Method, представляющих все объявленные методы этого класса - См. Спецификацию языка Java:
- 8.2 Члены класса
8.4 Объявления методов
- С версии:
- 1.1
- См. также:
getDeclaredConstructors
public Constructor<?>[] getDeclaredConstructors()
Constructor, отражающих все конструкторы, неявно или явно объявленные классом, представленным этим объектом Class. Это открытые, защищенные, доступные по умолчанию (в пределах пакета) и закрытые конструкторы. Элементы в возвращаемом массиве не отсортированы и не располагаются в каком-либо определенном порядке. Если класс имеет конструктор по умолчанию (JLS §8.8.9), он включается в возвращаемый массив. Если класс записей имеет канонический конструктор (JLS §8.10.4.1, §8.10.4.2), он включается в возвращаемый массив. Этот метод возвращает массив нулевой длины, если этот объект Class представляет интерфейс, примитивный тип, класс массива или void.- Возвращает:
- массив объектов
Constructor, представляющих все объявленные конструкторы этого класса - См. Спецификацию языка Java:
- 8.8 Объявления конструкторов
- С версии:
- 1.1
- См. также:
getDeclaredField
public Field getDeclaredField(String name) throws NoSuchFieldException
Field, который отражает указанное объявленное поле класса или интерфейса, представленного этим объектом Class. Параметр name представляет собой String, задающую простое имя нужного поля. Если этот объект Class представляет тип массива, данный метод не находит поле length типа массива.
- Параметры:
-
name- имя поля - Возвращает:
- объект
Fieldдля указанного поля в этом классе - Исключения:
-
NoSuchFieldException- если поле с указанным именем не найдено. - См. Спецификацию языка Java:
- 8.2 Члены класса
8.3 Объявления полей
- С версии:
- 1.1
getDeclaredMethod
public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException
Method, который отражает указанный объявленный метод класса или интерфейса, представленного этим объектом Class. Параметр name представляет собой String, задающую простое имя нужного метода, а параметр parameterTypes представляет собой массив объектов Class, идентифицирующих типы формальных параметров метода в порядке их объявления. Если в классе объявлено несколько методов с одинаковыми типами параметров, и один из этих методов имеет тип возвращаемого значения более специфичный, чем любой из остальных, возвращается этот метод; в противном случае один из методов выбирается произвольно. Если имя равно "<init>" или "<clinit>", генерируется исключение NoSuchMethodException. Если этот объект Class представляет тип массива, данный метод не находит метод clone().
- Параметры:
-
name- имя метода -
parameterTypes- массив параметров, может бытьnull - Возвращает:
- объект
Methodдля метода этого класса, соответствующего указанным имени и параметрам - Исключения:
-
NoSuchMethodException- если подходящий метод не найден, еслиparameterTypesсодержитnull, или если имя равно "<init>" либо "<clinit>" - См. Спецификацию языка Java:
- 8.2 Члены класса
8.4 Объявления методов
- С версии:
- 1.1
getDeclaredConstructor
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException
Constructor, который отражает указанный конструктор класса, представленного этим объектом Class. Параметр parameterTypes представляет собой массив объектов Class, идентифицирующих типы формальных параметров конструктора в порядке их объявления. Если этот объект Class представляет внутренний класс, объявленный в нестатическом контексте, типы формальных параметров включают явный охватывающий экземпляр в качестве первого параметра.- Параметры:
-
parameterTypes- массив параметров, может бытьnull - Возвращает:
- объект
Constructorдля конструктора с указанным списком параметров - Исключения:
-
NoSuchMethodException- если подходящий конструктор не найден, если этот объектClassпредставляет интерфейс, примитивный тип, класс массива или void, либо еслиparameterTypesсодержитnull - С версии:
- 1.1
- См. также:
getResourceAsStream
public InputStream getResourceAsStream(String name)
Если этот класс находится в именованном Module, этот метод попытается найти ресурс в данном модуле. Это достигается путем делегирования методу findResource(String,String) загрузчика классов модуля с передачей имени модуля и абсолютного имени ресурса. К ресурсам в именованных модулях применяются правила инкапсуляции, определенные в методе getResourceAsStream класса Module, поэтому данный метод возвращает null, если ресурс не является ресурсом ".class" в пакете, который не открыт вызывающему модулю.
В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с данным классом, реализуются определяющим загрузчиком классов этого класса. Данный метод делегирует вызов загрузчику классов этого объекта Class. Если этот объект Class был загружен начальным загрузчиком классов, метод делегирует вызов ClassLoader.getSystemResourceAsStream(String).
Перед делегированием из заданного имени ресурса формируется абсолютное имя ресурса по следующему алгоритму:
- Если
nameначинается с'/'('\u002f'), то абсолютным именем ресурса является частьname, следующая за'/'. - В противном случае абсолютное имя имеет следующий вид:
modified_package_name/nameГде
modified_package_name— это имя пакета данного объекта, в котором'/'заменяется на'.'('\u002e').
- Параметры:
-
name- имя нужного ресурса - Возвращает:
- Объект
InputStream;null, если ресурс с таким именем не найден, или если ресурс находится в пакете, который не открыт по крайней мере вызывающему модулю. - С версии:
- 1.1
- См. также:
getResource
public URL getResource(String name)
Если этот класс находится в именованном Module, этот метод попытается найти ресурс в данном модуле. Это достигается путем делегирования методу findResource(String,String) загрузчика классов модуля с передачей имени модуля и абсолютного имени ресурса. К ресурсам в именованных модулях применяются правила инкапсуляции, определенные в методе getResourceAsStream класса Module, поэтому данный метод возвращает null, если ресурс не является ресурсом ".class" в пакете, который не открыт вызывающему модулю.
В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с данным классом, реализуются определяющим загрузчиком классов этого класса. Данный метод делегирует вызов загрузчику классов этого объекта Class. Если этот объект Class был загружен начальным загрузчиком классов, метод делегирует вызов ClassLoader.getSystemResource(String).
Перед делегированием из заданного имени ресурса формируется абсолютное имя ресурса по следующему алгоритму:
- Если
nameначинается с'/'('\u002f'), то абсолютным именем ресурса является частьname, следующая за'/'. - В противном случае абсолютное имя имеет следующий вид:
modified_package_name/nameГде
modified_package_name— это имя пакета данного объекта, в котором'/'заменяется на'.'('\u002e').
getProtectionDomain
public ProtectionDomain getProtectionDomain()
ProtectionDomain этого класса.- Возвращает:
- ProtectionDomain этого класса
- С версии:
- 1.2
- См. также:
desiredAssertionStatus
public boolean desiredAssertionStatus()
- Примечание к API:
- Лишь немногим программистам понадобится этот метод; он предназначен главным образом для самого JDK. (Он позволяет классу определить во время инициализации, должны ли быть включены утверждения.) Обратите внимание, что этот метод не гарантирует возврат фактического статуса утверждений, который был (или будет) связан с указанным классом при его инициализации.
- Возвращает:
- желаемый статус утверждений указанного класса.
- С версии:
- 1.4
- См. также:
isEnum
public boolean isEnum()
Enum сам по себе не является классом перечисления. Также обратите внимание, что если константа перечисления объявлена с телом класса, классом объекта этой константы перечисления является анонимный класс, а не объявляющий класс перечисления. Для получения класса перечисления, объявившего константу, можно использовать метод Enum.getDeclaringClass() константы перечисления.- Возвращает:
- true тогда и только тогда, когда этот класс был объявлен как перечисление в исходном коде
- См. Спецификацию языка Java:
- 8.9.1 Константы перечисления
- С версии:
- 1.5
isRecord
public boolean isRecord()
true тогда и только тогда, когда этот класс является классом записей. Прямым суперклассом класса записей является java.lang.Record. Класс записей является final. Класс записей имеет (возможно, ноль) компонентов записи; метод getRecordComponents() возвращает ненулевое (non-null), но, возможно, пустое значение для записи.
Обратите внимание, что класс Record не является классом записей, и поэтому вызов этого метода для класса Record возвращает false.
- Возвращает:
- true тогда и только тогда, когда этот класс является классом записей, в противном случае false
- См. Спецификацию языка Java:
- 8.10 Классы записей
- С версии:
- 16
getEnumConstants
public T[] getEnumConstants()
- Возвращает:
- массив, содержащий значения, составляющие перечислимый класс, представленный этим объектом
Class, в порядке их объявления, или null, если этот объектClassне представляет перечислимый класс - См. Спецификацию языка Java:
- 8.9.1 Константы перечисления
- Начиная с версии:
- 1.5
cast
public T cast(Object obj)
Class.- Параметры:
-
obj- объект, который необходимо привести, может иметь значениеnull - Возвращает:
- объект после приведения или null, если obj равен null
- Исключения:
-
ClassCastException- если объект не равен null и не может быть присвоен типу T. - Начиная с версии:
- 1.5
asSubclass
public <U> Class<? extends U> asSubclass(Class<U> clazz)
Class к представлению подкласса класса, представленного указанным объектом класса. Проверяет допустимость приведения и выбрасывает ClassCastException, если оно недопустимо. В случае успеха этот метод всегда возвращает ссылку на данный объект Class. Этот метод полезен, когда клиенту требуется «сузить» тип объекта Class для передачи его в API, который ограничивает принимаемые объекты Class. Простое приведение типов вызвало бы предупреждение компилятора, поскольку правильность приведения не может быть проверена во время выполнения (так как обобщенные типы реализуются через стирание типов).
- Параметры типа:
U- тип, к которому приводится данный объектClass- Параметры:
-
clazz- класс типа, к которому приводится данный объектClass - Возвращает:
- этот объект
Class, приведенный к представлению подкласса указанного объекта класса. - Исключения:
-
ClassCastException- если этот объектClassне представляет подкласс указанного класса (здесь «подкласс» включает сам класс). - Начиная с версии:
- 1.5
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления (declaration annotation).
- Указано в:
-
getAnnotationв интерфейсеAnnotatedElement - Параметры типа:
A- тип аннотации, которую необходимо запросить и вернуть, если она присутствует- Параметры:
-
annotationClass- объект Class, соответствующий типу аннотации - Возвращает:
- аннотацию этого элемента для указанного типа аннотации, если она присутствует на этом элементе, иначе null
- Начиная с версии:
- 1.5
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Логическое значение, возвращаемое этим методом, эквивалентно: getAnnotation(annotationClass) != null
- Указано в:
-
isAnnotationPresentв интерфейсеAnnotatedElement - Параметры:
-
annotationClass- объект Class, соответствующий типу аннотации - Возвращает:
- true, если аннотация указанного типа аннотации присутствует на этом элементе, иначе false
- Начиная с версии:
- 1.5
getAnnotationsByType
public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
AnnotatedElement.getAnnotation(Class) заключается в том, что данный метод определяет, является ли его аргумент повторяемым типом аннотации (JLS §9.6), и если это так, пытается найти одну или несколько аннотаций этого типа, «просматривая сквозь» контейнерную аннотацию. Вызывающая сторона этого метода может свободно модифицировать возвращенный массив; это не повлияет на массивы, возвращаемые другим вызывающим сторонам. Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления (declaration annotations).
- Указано в:
-
getAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
A- тип аннотации, которую необходимо запросить и вернуть, если она присутствует- Параметры:
-
annotationClass- объект Class, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента для указанного типа аннотации, если они ассоциированы с этим элементом, иначе массив нулевой длины
- Начиная с версии:
- 1.8
getAnnotations
public Annotation[] getAnnotations()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления (declaration annotations).
- Указано в:
-
getAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, присутствующие на этом элементе
- Начиная с версии:
- 1.5
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления (declaration annotation).
- Указано в:
-
getDeclaredAnnotationв интерфейсеAnnotatedElement - Параметры типа:
A- тип аннотации, которую необходимо запросить и вернуть, если она непосредственно присутствует- Параметры:
-
annotationClass- объект Class, соответствующий типу аннотации - Возвращает:
- аннотацию этого элемента для указанного типа аннотации, если она непосредственно присутствует на этом элементе, иначе null
- Начиная с версии:
- 1.8
getDeclaredAnnotationsByType
public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
AnnotatedElement.getDeclaredAnnotation(Class) заключается в том, что данный метод определяет, является ли его аргумент повторяемым типом аннотации (JLS §9.6), и если это так, пытается найти одну или несколько аннотаций этого типа, «просматривая сквозь» контейнерную аннотацию, если она присутствует. Вызывающая сторона этого метода может свободно модифицировать возвращенный массив; это не повлияет на массивы, возвращаемые другим вызывающим сторонам. Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления (declaration annotations).
- Указано в:
-
getDeclaredAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
A- тип аннотации, которую необходимо запросить и вернуть, если она непосредственно или косвенно присутствует- Параметры:
-
annotationClass- объект Class, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента для указанного типа аннотации, если они непосредственно или косвенно присутствуют на этом элементе, иначе массив нулевой длины
- Начиная с версии:
- 1.8
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления (declaration annotations).
- Указано в:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, непосредственно присутствующие на этом элементе
- Начиная с версии:
- 1.5
getAnnotatedSuperclass
public AnnotatedType getAnnotatedSuperclass()
AnnotatedType, который представляет использование типа для указания суперкласса сущности, представленной этим объектом
Class. (Использование типа Foo для указания суперкласса в '... extends Foo' отличается от объявления класса Foo.) Если этот объект Class представляет класс, объявление которого явно не указывает аннотированный суперкласс, то возвращаемым значением является объект AnnotatedType, представляющий элемент без аннотаций.
Если этот Class представляет класс Object, интерфейсный тип, массивный тип, примитивный тип или void, возвращаемым значением является null.
- Возвращает:
- объект, представляющий суперкласс
- Начиная с версии:
- 1.8
getAnnotatedInterfaces
public AnnotatedType[] getAnnotatedInterfaces()
AnnotatedType, которые представляют использование типов для указания суперинтерфейсов сущности, представленной этим объектом Class. (Использование типа Foo для указания суперинтерфейса в '... implements Foo' отличается от объявления интерфейса Foo.) Если этот объект Class представляет класс, возвращаемым значением является массив, содержащий объекты, представляющие использование интерфейсных типов для указания интерфейсов, реализуемых данным классом. Порядок объектов в массиве соответствует порядку интерфейсных типов, используемых в секции 'implements' объявления этого объекта Class.
Если этот объект Class представляет интерфейс, возвращаемым значением является массив, содержащий объекты, представляющие использование интерфейсных типов для указания интерфейсов, непосредственно расширяемых данным интерфейсом. Порядок объектов в массиве соответствует порядку интерфейсных типов, используемых в секции 'extends' объявления этого объекта Class.
Если этот объект Class представляет класс или интерфейс, объявление которого явно не указывает никаких аннотированных суперинтерфейсов, возвращаемым значением является массив нулевой длины.
Если этот объект Class представляет класс Object, массивный тип, примитивный тип или void, возвращаемым значением является массив нулевой длины.
- Возвращает:
- массив, представляющий суперинтерфейсы
- Начиная с версии:
- 1.8
getNestHost
public Class<?> getNestHost()
Class. Каждый класс и интерфейс принадлежит ровно одному гнезду. Если хост гнезда этого класса или интерфейса был определен ранее, то этот метод возвращает данный хост гнезда. Если хост гнезда этого класса или интерфейса ранее не определялся, этот метод определяет его с помощью алгоритма JVMS 5.4.4 и возвращает его. Часто класс или интерфейс принадлежит гнезду, состоящему только из него самого; в этом случае данный метод возвращает this, указывая, что данный класс или интерфейс является хостом гнезда. Если этот объект Class представляет примитивный тип, массивный тип или void, данный метод возвращает this, указывая, что представленная сущность принадлежит гнезду, состоящему только из нее самой, и является хостом этого гнезда.
- Возвращает:
- хост гнезда этого класса или интерфейса
- См. Спецификацию виртуальной машины Java:
- 4.7.28 Атрибут
NestHost
4.7.29 АтрибутNestMembers
5.4.4 Управление доступом
- Начиная с версии:
- 11
isNestmateOf
public boolean isNestmateOf(Class<?> c)
Class сочленом гнезда (nestmate) класса или интерфейса, представленного этим объектом Class. Два класса или интерфейса являются сочленами гнезда, если у них один и тот же хост гнезда.- Параметры:
-
c- класс для проверки - Возвращает:
-
true, если этот класс иcявляются членами одного и того же гнезда; иfalseв противном случае. - Начиная с версии:
- 11
getNestMembers
public Class<?>[] getNestMembers()
Class, представляющие все классы и интерфейсы, являющиеся членами того гнезда, которому принадлежит класс или интерфейс, представленный этим объектом Class. Сначала этот метод получает хост гнезда, H, того гнезда, которому принадлежит класс или интерфейс, представленный данным объектом Class. Нулевым элементом возвращаемого массива является H. Затем для каждого класса или интерфейса C, зарегистрированного в H как член его гнезда, данный метод пытается получить объект Class для C (используя определяющий загрузчик классов текущего объекта Class), а затем получает хост гнезда того гнезда, которому принадлежит C. Классы и интерфейсы, которые зарегистрированы в H как члены его гнезда и для которых H может быть определен в качестве их хоста гнезда, указываются последующими элементами возвращаемого массива. Порядок таких элементов не определен. Наличие дубликатов допускается. Если этот объект Class представляет примитивный тип, массивный тип или void, то этот метод возвращает массив из одного элемента, содержащий this.
- Примечание к API:
- Возвращаемый массив включает только тех членов гнезда, которые зафиксированы в атрибуте
NestMembers, и не содержит скрытых классов, добавленных в гнездо черезLookup::defineHiddenClass. - Возвращает:
- массив всех классов и интерфейсов в том же гнезде, что и данный класс или интерфейс
- См. Спецификацию виртуальной машины Java:
- 4.7.28 Атрибут
NestHost
4.7.29 АтрибутNestMembers
- Начиная с версии:
- 11
- См. также:
descriptorString
public String descriptorString()
void), представленной этим объектом Class. Если этот объект Class представляет класс или интерфейс, не являющийся массивным классом, тогда:
- Если класс или интерфейс не является скрытым, результатом является дескриптор поля (JVMS §4.3.2) для этого класса или интерфейса. Вызов
ClassDesc::ofDescriptorс полученной строкой дескриптора создаетClassDesc, описывающий данный класс или интерфейс. - Если класс или интерфейс является скрытым, результатом является строка вида:
где N — бинарное имя, закодированное во внутреннем формате, указанном файлом"L" +N+ "." + <suffix> + ";"class, переданным вLookup::defineHiddenClass, а<suffix>— неквалифицированное имя. Скрытый класс или интерфейс не имеет номинального дескриптора. Результирующая строка не является дескриптором типа.
Если этот объект Class представляет массивный класс, результатом является строка, состоящая из одного или нескольких символов '[', представляющих глубину вложенности массива, за которыми следует строка дескриптора типа элемента.
- Если тип элемента не является скрытым классом или интерфейсом, этот класс массива может быть описан номинально. Вызов
ClassDesc::ofDescriptorс полученной строкой дескриптора создаетClassDesc, описывающий данный класс массива. - Если тип элемента является скрытым классом или интерфейсом, этот класс массива не может быть описан номинально. Результирующая строка не является дескриптором типа.
Если этот объект Class представляет примитивный тип или void, результатом является строка дескриптора поля, представляющая собой однобуквенный код, соответствующий примитивному типу или void ("B", "C", "D", "F", "I", "J", "S", "Z", "V") (JVMS §4.3.2).
- Указано в:
-
descriptorStringв интерфейсеTypeDescriptor - Возвращает:
- строку дескриптора для этого объекта
Class - См. Спецификацию виртуальной машины Java:
- 4.3.2 Дескрипторы полей
- Начиная с версии:
- 12
componentType
public Class<?> componentType()
Class, если он описывает массивный тип, или null в противном случае.- Указано в:
-
componentTypeв интерфейсеTypeDescriptor.OfField<T> - Требования к реализации:
- Эквивалентно
getComponentType(). - Возвращает:
Class, описывающий тип компонента, илиnull, если этотClassне описывает массивный тип- Начиная с версии:
- 12
arrayType
public Class<?> arrayType()
Class для массивного типа, тип компонента которого описывается данным Class.- Указано в:
-
arrayTypeв интерфейсеTypeDescriptor.OfField<T> - Возвращает:
Class, описывающий массивный тип- Исключения:
-
UnsupportedOperationException- если этот тип компонента равен void или если количество измерений результирующего массивного типа превысит 255. - См. Спецификацию виртуальной машины Java:
- 4.3.2 Дескрипторы полей
4.4.1 СтруктураCONSTANT_Class_info
- Начиная с версии:
- 12
describeConstable
public Optional<ClassDesc> describeConstable()
Optional, если его сконструировать нельзя.- Указано в:
-
describeConstableв интерфейсеConstable - Возвращает:
Optional, содержащий результирующий номинальный дескриптор, или пустойOptional, если его невозможно сконструировать.- Начиная с версии:
- 12
isHidden
public boolean isHidden()
true тогда и только тогда, когда базовый класс является скрытым классом.- Возвращает:
-
trueтогда и только тогда, когда данный класс является скрытым классом. - Начиная с версии:
- 15
- См. также:
getPermittedSubclasses
public Class<?>[] getPermittedSubclasses()
Class, представляющие прямые суперинтерфейсы или подклассы, которым разрешено расширять или реализовывать данный класс или интерфейс, если он является запечатанным (sealed). Порядок таких элементов не определен. Массив пуст, если этот запечатанный класс или интерфейс не имеет разрешенных подклассов. Если этот объект Class представляет примитивный тип, void, массивный тип или класс/интерфейс, который не является запечатанным (то есть isSealed() возвращает false), тогда данный метод возвращает null. Напротив, если isSealed() возвращает true, то этот метод возвращает значение, отличное от null. Для каждого класса или интерфейса C, зафиксированного в качестве разрешенного прямого суперинтерфейса или подкласса этого класса или интерфейса, данный метод пытается получить объект Class для C (используя определяющий загрузчик классов текущего объекта Class). Объекты Class, которые могут быть получены и которые являются прямыми суперинтерфейсами или подклассами этого класса или интерфейса, указываются элементами возвращаемого массива. Если объект Class не может быть получен, он просто игнорируется и не включается в результирующий массив.- Возвращает:
- массив объектов
Classразрешенных подклассов этого класса или интерфейса, илиnull, если этот класс или интерфейс не является запечатанным. - См. Спецификацию языка Java:
- 8.1 Объявления классов
9.1 Объявления интерфейсов
- Начиная с версии:
- 17
isSealed
public boolean isSealed()
true тогда и только тогда, когда данный объект Class представляет запечатанный класс или интерфейс. Если этот объект Class представляет примитивный тип, void или массивный тип, данный метод возвращает false. Запечатанный класс или интерфейс имеет (возможно, ноль) разрешенных подклассов; getPermittedSubclasses() возвращает значение, отличное от null, но, возможно, пустое, для запечатанного класса или интерфейса.- Возвращает:
-
trueтогда и только тогда, когда данный объектClassпредставляет запечатанный класс или интерфейс. - См. Спецификацию языка Java:
- 8.1 Объявления классов
9.1 Объявления интерфейсов
- Начиная с версии:
- 17
© 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.