Класс 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. Класс перечисления и класс записи — это разновидности класса; интерфейс аннотации — разновидность интерфейса. Каждый массив также принадлежит классу, который отражается в виде объекта 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 обычно указывает класс верхнего уровня в качестве хоста гнезда, а другими его участниками становятся классы и интерфейсы, объявления которых вложены в объявление этого класса верхнего уровня.
Класс или интерфейс, созданный вызовом метода
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>
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Set |
accessFlags() |
Возвращает неизменяемый набор флагов доступа для этого класса, который может быть пустым. |
Class |
arrayType() |
Возвращает Class для типа массива, тип компонента которого описывается этим классом. |
<U> Class |
asSubclass |
Приводит этот объект Class к представлению подкласса класса, представленного указанным объектом класса. |
T |
cast |
Приводит объект к классу или интерфейсу, представленному этим объектом Class. |
Class |
componentType() |
Возвращает тип компонента этого Class, если он описывает тип массива, или null в противном случае. |
Optional |
describeConstable() |
Возвращает номинальный дескриптор для этого экземпляра, если его можно создать, или пустой объект Optional, если создать его нельзя. |
String |
descriptorString() |
Возвращает строку дескриптора сущности (класса, интерфейса, класса массива, примитивного типа или void), представленной этим объектом Class. |
boolean |
desiredAssertionStatus() |
Возвращает состояние утверждений, которое было бы назначено этому классу, если бы он инициализировался в момент вызова этого метода. |
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() |
Возвращает каноническое имя базового класса, определенное в Спецификации языка Java. |
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() |
Возвращает Types, представляющие интерфейсы, непосредственно реализуемые классом или интерфейсом, представленным этим объектом 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() |
Возвращает хост гнезда, к которому принадлежит класс или интерфейс, представленный этим объектом Class. |
Class<?>[] |
getNestMembers() |
Возвращает массив объектов Class, представляющих все классы и интерфейсы, являющиеся членами гнезда, к которому принадлежит класс или интерфейс, представленный этим объектом Class. |
Package |
getPackage() |
Возвращает пакет этого класса. |
String |
getPackageName() |
Возвращает полное имя пакета. |
Class<?>[] |
getPermittedSubclasses() |
Возвращает массив объектов Class, представляющих непосредственные подинтерфейсы или подклассы, которым разрешено расширять этот класс или реализовывать этот интерфейс, если он является запечатанным. |
ProtectionDomain |
getProtectionDomain() |
Возвращает ProtectionDomain этого класса. |
RecordComponent[] |
getRecordComponents() |
Возвращает массив объектов RecordComponent, представляющих все компоненты записи этого класса записи, или null, если этот класс не является классом записи. |
URL |
getResource |
Находит ресурс с указанным именем. |
InputStream |
getResourceAsStream |
Находит ресурс с указанным именем. |
Object[] |
getSigners() |
Возвращает подписантов этого класса. |
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 тогда и только тогда, когда этот класс объявлен перечислением в исходном коде. |
boolean |
isHidden() |
Возвращает true тогда и только тогда, когда базовый класс является скрытым классом. |
boolean |
isInstance |
Определяет, совместим ли указанный Object по присваиванию с объектом, представленным этим Class. |
boolean |
isInterface() |
Определяет, представляет ли этот объект Class тип интерфейса. |
boolean |
isLocalClass() |
Возвращает true тогда и только тогда, когда базовый класс является локальным классом. |
boolean |
isMemberClass() |
Возвращает true тогда и только тогда, когда базовый класс является классом-членом. |
boolean |
isNestmateOf |
Определяет, является ли указанный Class соседом по гнезду класса или интерфейса, представленного этим объектом Class. |
boolean |
isPrimitive() |
Определяет, представляет ли этот объект Class примитивный тип или void. |
boolean |
isRecord() |
Возвращает true тогда и только тогда, когда этот класс является классом записи. |
boolean |
isSealed() |
Возвращает true тогда и только тогда, когда этот объект Class представляет запечатанный класс или интерфейс. |
boolean |
isSynthetic() |
Возвращает true тогда и только тогда, когда для этого класса установлен бит синтетического модификатора. |
T |
newInstance() |
Устарел. Этот метод передает любое исключение, вызванное конструктором без параметров, включая проверяемое исключение. |
String |
toGenericString() |
Возвращает строку с описанием этого Class, включая сведения о модификаторах, статусе sealed/
non-sealed и параметрах типа. |
String |
toString() |
Преобразует объект в строку. |
Подробное описание методов
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 Загрузка классов и интерфейсов
12.3 Связывание классов и интерфейсов
12.4 Инициализация классов и интерфейсов
forName
public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
Class, связанный с классом или интерфейсом, имя которого задано строкой, используя указанный загрузчик классов. Получив двоичное имя класса или интерфейса, этот метод пытается найти и загрузить класс или интерфейс. Для загрузки класса или интерфейса используется указанный загрузчик классов. Если параметр loader имеет значение null, класс загружается загрузчиком классов начальной загрузки. Класс инициализируется только в том случае, если параметр 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— загрузчик классов, с помощью которого должен быть загружен класс - Возвращает:
- объект класса, представляющий нужный класс
- Исключения:
-
LinkageError— если связывание завершилось неудачно -
ExceptionInInitializerError— если инициализация, вызванная этим методом, завершилась неудачно -
ClassNotFoundException— если указанный загрузчик классов не может найти класс - См. Спецификацию языка Java:
- 12.2 Загрузка классов и интерфейсов
12.3 Связывание классов и интерфейсов
12.4 Инициализация классов и интерфейсов
13.1 Форма двоичного представления
- С версии:
- 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, если класс не найден. - Исключения:
-
NullPointerException— если указанный модуль или имя имеют значениеnull -
LinkageError— если связывание завершилось неудачно - См. Спецификацию языка Java:
- 12.2 Загрузка классов и интерфейсов
12.3 Связывание классов и интерфейсов
- С версии:
- 9
forPrimitiveName
public static Class<?> forPrimitiveName(String primitiveName)
Class, связанный с примитивным типом с указанным именем. Если аргумент не является именем примитивного типа, возвращается
null.- Параметры:
-
primitiveName— имя искомого примитивного типа - Возвращает:
- объект
Class, связанный с примитивным типом с указанным именем - Исключения:
-
NullPointerException— если аргумент имеет значениеnull - См. Спецификацию языка Java:
- 4.2 Примитивные типы и значения
15.8.2 Литералы классов
- С версии:
- 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, при присваивании. Этот метод является динамическим эквивалентом оператора instanceof языка Java. Метод возвращает true, если указанный аргумент Object не равен null и может быть приведён к ссылочному типу, представленному этим объектом Class, без возникновения ClassCastException.. В противном случае он возвращает false. В частности, если этот объект Class представляет объявленный класс, метод возвращает true, если указанный аргумент Object является экземпляром представленного класса (или любого его подкласса); в противном случае он возвращает false. Если этот объект Class представляет класс массива, метод возвращает true, если указанный аргумент Object можно преобразовать в объект класса массива с помощью тождественного преобразования или расширяющего преобразования ссылки; в противном случае он возвращает false. Если этот объект Class представляет интерфейс, метод возвращает true, если класс указанного аргумента Object или любой из его суперклассов реализует этот интерфейс; в противном случае он возвращает false. Если этот объект Class представляет примитивный тип, метод возвращает false.
- Параметры:
-
obj— проверяемый объект - Возвращает:
- true, если
objявляется экземпляром этого класса - С версии:
- 1.1
isAssignableFrom
public boolean isAssignableFrom(Class<?> cls)
Class, тем же классом или интерфейсом, что и класс или интерфейс, представленный указанным параметром Class, либо его суперклассом или суперинтерфейсом. Если да, метод возвращает true; в противном случае он возвращает false. Если этот объект Class представляет примитивный тип, метод возвращает true, если указанный параметр Class в точности совпадает с этим объектом Class; в противном случае он возвращает false. В частности, этот метод проверяет, можно ли преобразовать тип, представленный указанным параметром Class, к типу, представленному этим объектом Class, с помощью тождественного преобразования или расширяющего преобразования ссылки. Подробности см. в разделах 5.1.1 и 5.1.4 Спецификации языка Java.
- Параметры:
-
cls— объектClass, который нужно проверить - Возвращает:
- значение
boolean, указывающее, можно ли присваивать объекты типаclsобъектам этого класса - Исключения:
-
NullPointerException— если указанный параметр Class равен null. - С версии:
- 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 Литералы классов
- С версии:
- 1.1
- См. также:
isAnnotation
public boolean isAnnotation()
Class представляет интерфейс аннотации. Обратите внимание: если этот метод возвращает true, то isInterface() также вернёт true, поскольку все интерфейсы аннотаций являются интерфейсами.- Возвращает:
-
true, если этот объектClassпредставляет интерфейс аннотации; в противном случае —false - С версии:
- 1.5
isSynthetic
public boolean isSynthetic()
true тогда и только тогда, когда для этого класса установлен бит синтетического модификатора.- Возвращает:
-
trueтогда и только тогда, когда для этого класса установлен бит синтетического модификатора - См. Спецификацию языка Java:
- 13.1 Форма двоичного представления
- См. Спецификацию виртуальной машины Java:
- 4.1 Структура
ClassFile
- С версии:
- 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 Форма двоичного представления
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.
- Возвращает:
- непосредственный суперкласс класса, представленного этим объектом
Class - Выбрасывает:
-
GenericSignatureFormatError— если обобщённая сигнатура класса не соответствует формату, указанному в разделе 4.7.9 Спецификации виртуальной машины Java -
TypeNotPresentException— если обобщённый суперкласс ссылается на несуществующее объявление типа -
MalformedParameterizedTypeException— если обобщённый суперкласс ссылается на параметризованный тип, который по какой-либо причине не может быть создан - Начиная с:
- 1.5
getPackage
public Package getPackage()
Если этот класс представляет тип массива, примитивный тип или void, этот метод возвращает null.
- Возвращает:
- пакет этого класса.
getPackageName
public String getPackageName()
Если этот класс является классом верхнего уровня, метод возвращает полное имя пакета, членом которого является класс, или пустую строку, если класс находится в безымянном пакете.
Если этот класс является внутренним классом, метод эквивалентен вызову getPackageName() для охватывающего класса.
Если этот класс является локальным классом или анонимным классом, метод эквивалентен вызову getPackageName() для объявляющего класса охватывающего метода или охватывающего конструктора.
Если этот класс представляет тип массива, метод возвращает имя пакета типа элемента. Если этот класс представляет примитивный тип или void, возвращается имя пакета "java.lang".
- Возвращает:
- полное имя пакета
- См. Спецификацию языка Java:
- 6.7 Полные имена и канонические имена
- Начиная с:
- 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 представляет класс или интерфейс, не реализующий интерфейсы, метод возвращает массив длины 0.
Если этот объект Class представляет примитивный тип или void, метод возвращает массив длины 0.
Если этот объект Class представляет тип массива, интерфейсы Cloneable и java.io.Serializable возвращаются именно в таком порядке.
- Возвращает:
- массив интерфейсов, непосредственно реализуемых этим классом
getGenericInterfaces
public Type[] getGenericInterfaces()
Type, представляющие интерфейсы, непосредственно реализуемые классом или интерфейсом, представленным этим объектом Class. Если супертип-интерфейс является параметризованным типом, возвращённый для него объект Type должен точно отражать фактические аргументы типа, использованные в исходном коде. Параметризованный тип, представляющий каждый супертип-интерфейс, создаётся, если он ещё не был создан. Семантика процесса создания параметризованных типов описана в объявлении ParameterizedType.
Если этот объект Class представляет класс, возвращаемое значение — массив, содержащий объекты, представляющие все интерфейсы, непосредственно реализуемые этим классом. Порядок объектов интерфейсов в массиве соответствует порядку имён интерфейсов в предложении implements объявления класса, представленного этим объектом Class.
Если этот объект Class представляет интерфейс, массив содержит объекты, представляющие все интерфейсы, непосредственно расширяемые этим интерфейсом. Порядок объектов интерфейсов в массиве соответствует порядку имён интерфейсов в предложении extends объявления интерфейса, представленного этим объектом Class.
Если этот объект Class представляет класс или интерфейс, не реализующий интерфейсы, метод возвращает массив длины 0.
Если этот объект Class представляет примитивный тип или void, метод возвращает массив длины 0.
Если этот объект Class представляет тип массива, интерфейсы Cloneable и java.io.Serializable возвращаются именно в таком порядке.
- Возвращает:
- массив интерфейсов, непосредственно реализуемых этим классом
- Выбрасывает:
-
GenericSignatureFormatError— если обобщённая сигнатура класса не соответствует формату, указанному в разделе 4.7.9 Спецификации виртуальной машины Java -
TypeNotPresentException— если какой-либо из обобщённых супертип-интерфейсов ссылается на несуществующее объявление типа -
MalformedParameterizedTypeException— если какой-либо из обобщённых супертип-интерфейсов ссылается на параметризованный тип, который по какой-либо причине не может быть создан - Начиная с:
- 1.5
getComponentType
public Class<?> getComponentType()
Class, представляющий тип компонента массива. Если этот класс не представляет класс массива, метод возвращает null.- Возвращает:
Class, представляющий тип компонента этого класса, если этот класс является массивом- Начиная с:
- 1.1
- См. также:
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 Спецификации виртуальной машины Java.
- Возвращает:
int, представляющий модификаторы этого класса- См. Спецификацию языка Java:
- 8.1.1 Модификаторы классов
9.1.1 Модификаторы интерфейсов
- См. Спецификацию виртуальной машины Java:
- 4.1 Структура
ClassFile
- Начиная с:
- 1.1
- См. также:
accessFlags
public Set<AccessFlag> accessFlags()
Если базовый класс является классом массива:
- его флаги доступа
PUBLIC,PRIVATEиPROTECTEDсовпадают с флагами доступа типа его компонента - его флаги
ABSTRACTиFINALприсутствуют - его флаг
INTERFACEотсутствует, даже если тип компонента является интерфейсом
Class представляет примитивный тип или void, флаги равны PUBLIC, ABSTRACT и FINAL. Для объектов Class, представляющих void, примитивные типы и массивы, флаги доступа отсутствуют, за исключением описанных выше случаев.- Возвращает:
- неизменяемый набор флагов доступа этого класса; набор может быть пустым
- См. Спецификацию виртуальной машины Java:
- 4.1 Структура ClassFile
4.7.6 Атрибут InnerClasses
- Начиная с:
- 20
- См. также:
getSigners
public Object[] getSigners()
- Возвращает:
- подписантов этого класса или null, если подписантов нет. В частности, этот метод возвращает null, если объект
Classпредставляет примитивный тип или void. - Начиная с:
- 1.1
getEnclosingMethod
public Method getEnclosingMethod()
Class представляет локальный или анонимный класс внутри метода, возвращает объект Method, представляющий непосредственно охватывающий метод базового класса. В противном случае возвращает null. В частности, этот метод возвращает null, если базовый класс является локальным или анонимным классом, непосредственно охватываемым объявлением класса или интерфейса, инициализатором экземпляра или статическим инициализатором.- Возвращает:
- непосредственно охватывающий метод базового класса, если этот класс является локальным или анонимным; в противном случае —
null. - Начиная с:
- 1.5
getEnclosingConstructor
public Constructor<?> getEnclosingConstructor()
Class представляет локальный или анонимный класс внутри конструктора, возвращает объект Constructor, представляющий непосредственно охватывающий конструктор базового класса. В противном случае возвращает null. В частности, этот метод возвращает null, если базовый класс является локальным или анонимным классом, непосредственно охватываемым объявлением класса или интерфейса, инициализатором экземпляра или статическим инициализатором.- Возвращает:
- непосредственно охватывающий конструктор базового класса, если этот класс является локальным или анонимным; в противном случае —
null. - Начиная с:
- 1.5
getDeclaringClass
public Class<?> getDeclaringClass()
Class, является членом другого класса, возвращает объект Class, представляющий класс, в котором он был объявлен. Если этот класс или интерфейс не является членом какого-либо другого класса, метод возвращает null. Если этот объект Class представляет класс массива, примитивный тип или void, метод возвращает null.- Возвращает:
- объявляющий класс для этого класса
- Начиная с:
- 1.1
getEnclosingClass
public Class<?> getEnclosingClass()
null.- Возвращает:
- непосредственно охватывающий класс базового класса
- Начиная с:
- 1.5
getSimpleName
public String getSimpleName()
$". Простое имя класса массива — это простое имя типа компонента с добавлением "[]". В частности, простое имя класса массива, тип компонента которого является анонимным, — "[]".
- Возвращает:
- простое имя базового класса
- Начиная с:
- 1.5
getTypeName
public String getTypeName()
- Определено в:
-
getTypeNameв интерфейсеType - Возвращает:
- информативную строку с именем этого класса или интерфейса
- Начиная с:
- 1.8
getCanonicalName
public String getCanonicalName()
null. Классы без канонических имён включают: - локальный класс
- анонимный класс
- скрытый класс
- массив, тип компонента которого не имеет канонического имени
byte, short, char, int и т. д.). Тип массива имеет каноническое имя тогда и только тогда, когда его тип компонента имеет каноническое имя. Если у типа массива есть каноническое имя, оно равно каноническому имени типа компонента с добавлением "[]".
- Возвращает:
- каноническое имя базового класса, если оно существует, и
nullв противном случае. - См. Спецификацию языка Java:
- 6.7 Полные имена и канонические имена
- Начиная с:
- 1.5
isAnonymousClass
public boolean isAnonymousClass()
true тогда и только тогда, когда базовый класс является анонимным классом.- Примечание к API:
- Анонимный класс не является скрытым классом.
- Возвращает:
-
trueтогда и только тогда, когда этот класс является анонимным. - См. Спецификацию языка Java:
- 15.9.5 Объявления анонимных классов
- Начиная с:
- 1.5
isLocalClass
public boolean isLocalClass()
true тогда и только тогда, когда базовый класс является локальным классом.- Возвращает:
-
trueтогда и только тогда, когда этот класс является локальным. - См. Спецификацию языка Java:
- 14.3 Объявления локальных классов и интерфейсов
- Начиная с:
- 1.5
isMemberClass
public boolean isMemberClass()
true тогда и только тогда, когда базовый класс является внутренним классом.- Возвращает:
-
trueтогда и только тогда, когда этот класс является внутренним классом. - См. Спецификацию языка Java:
- 8.5 Объявления внутренних классов и интерфейсов
- Начиная с:
- 1.5
getClasses
public Class<?>[] getClasses()
Class, представляющие все открытые классы и интерфейсы, являющиеся членами класса, представленного этим объектом Class. Сюда входят открытые классы и интерфейсы-члены, унаследованные от суперклассов, а также открытые классы и интерфейсы-члены, объявленные самим классом. Если у этого объекта Class нет открытых классов или интерфейсов-членов, метод возвращает массив длины 0. Метод также возвращает массив длины 0, если этот объект Class представляет примитивный тип, класс массива или void.- Возвращает:
- массив объектов
Class, представляющих открытые члены этого класса - Начиная с:
- 1.1
getFields
public Field[] getFields()
Field, отражающие все доступные открытые поля класса или интерфейса, представленного этим объектом Class. Если этот объект Class представляет класс или интерфейс без доступных открытых полей, метод возвращает массив длины 0.
Если этот объект Class представляет класс, метод возвращает открытые поля класса, всех его суперклассов и супертип-интерфейсов.
Если этот объект Class представляет интерфейс, метод возвращает поля интерфейса и всех его супертип-интерфейсов.
Если этот объект Class представляет тип массива, примитивный тип или void, метод возвращает массив длины 0.
Элементы возвращаемого массива не отсортированы и не имеют определённого порядка.
- Возвращает:
- массив объектов
Field, представляющих открытые поля - См. Спецификацию языка Java:
- 8.2 Члены класса
8.3 Объявления полей
- Начиная с:
- 1.1
getMethods
public Method[] getMethods()
Method, отражающие все открытые методы класса или интерфейса, представленного этим объектом
Class, включая методы, объявленные самим классом или интерфейсом, и методы, унаследованные от суперклассов и супертип-интерфейсов. Если этот объект Class представляет тип массива, возвращаемый массив содержит объект Method для каждого открытого метода, унаследованного типом массива от Object. Он не содержит объект Method для clone().
Если этот объект Class представляет интерфейс, возвращаемый массив не содержит неявно объявленных методов из Object. Поэтому, если в этом интерфейсе или любом из его супертип-интерфейсов явно не объявлены методы, возвращаемый массив имеет длину 0. (Обратите внимание, что объект Class, представляющий класс, всегда содержит открытые методы, унаследованные от Object.)
Возвращаемый массив никогда не содержит методы с именами "<init>" или "<clinit>".
Элементы возвращаемого массива не отсортированы и не имеют определённого порядка.
Как правило, результат вычисляется по следующему алгоритму из четырёх шагов. Пусть C — класс или интерфейс, представленный этим объектом Class:
- Формируется объединение методов, состоящее из:
- объявленных открытых методов экземпляра и статических методов C, возвращаемых методом
getDeclaredMethods()и отфильтрованных так, чтобы включать только открытые методы; - если C является классом, отличным от
Object, включается результат рекурсивного вызова этого алгоритма для суперкласса C; - включаются результаты рекурсивного вызова этого алгоритма для всех непосредственных супертип-интерфейсов C, но только для методов экземпляра.
- объявленных открытых методов экземпляра и статических методов C, возвращаемых методом
- Объединение из шага 1 разбивается на подмножества методов с одинаковой сигнатурой (именем и типами параметров) и типом возвращаемого значения.
- В каждом таком подмножестве выбираются только наиболее специфичные методы. Пусть метод M — это метод из множества методов с одинаковой сигнатурой и типом возвращаемого значения. M является наиболее специфичным, если в том же множестве нет такого метода N != M, который специфичнее M. Метод N специфичнее M, если:
- N объявлен классом, а M — интерфейсом; или
- N и M объявлены оба классами или оба интерфейсами, а объявляющий тип N совпадает с объявляющим типом M или является его подтипом (очевидно, если объявляющие типы M и N совпадают, то M и N — один и тот же метод).
- Результат алгоритма — объединение всех выбранных на шаге 3 методов.
- Примечание к API:
- В классе может быть несколько методов с одинаковым именем и типами параметров: хотя язык Java запрещает объявлять в классе несколько методов с одинаковой сигнатурой, но разными типами возвращаемых значений, виртуальная машина Java такого ограничения не накладывает. Эта дополнительная гибкость виртуальной машины может использоваться для реализации различных языковых возможностей. Например, ковариантные типы возвращаемых значений можно реализовать с помощью мостовых методов; мостовой метод и переопределяющий его метод имеют одинаковую сигнатуру, но разные типы возвращаемых значений.
- Возвращает:
- массив объектов
Method, представляющих открытые методы этого класса - См. Спецификацию языка Java:
- 8.2 Члены класса
8.4 Объявления методов
- Начиная с:
- 1.1
getConstructors
public Constructor<?>[] getConstructors()
Constructor, отражающие все открытые конструкторы класса, представленного этим объектом Class. Возвращается массив длины 0, если у класса нет открытых конструкторов, если класс является классом массива либо если он представляет примитивный тип или void.- Примечание к API:
- Хотя этот метод возвращает массив объектов
Constructor<T>(то есть массив конструкторов этого класса), тип возвращаемого значения метода —Constructor<?>[], а неConstructor<T>[], как можно было бы ожидать. Этот менее информативный тип возвращаемого значения необходим, поскольку после возврата из метода массив можно изменить так, чтобы он содержал объектыConstructorдля других классов, что нарушило бы гарантии типов дляConstructor<T>[]. - Возвращает:
- массив объектов
Constructor, представляющих открытые конструкторы этого класса - Начиная с:
- 1.1
- См. также:
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- если поле с указанным именем не найдено. -
NullPointerException- еслиnameимеет значениеnull - См. Спецификацию языка 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>".
Как правило, отражаемый метод определяется следующим четырехэтапным алгоритмом. Пусть 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- список параметров - Возвращает:
- объект
Method, соответствующий указаннымnameиparameterTypes - Выбрасывает:
-
NoSuchMethodException- если соответствующий метод не найден либо имя равно "<init>" или "<clinit>". -
NullPointerException- еслиnameимеет значениеnull - См. Спецификацию языка Java:
- 8.2 Члены класса
8.4 Объявления методов
- С:
- 1.1
getConstructor
public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException
Constructor, отражающий указанный открытый конструктор класса, представленного этим объектом Class. Параметр parameterTypes — это массив объектов Class, задающих типы формальных параметров конструктора в порядке объявления. Если этот объект Class представляет внутренний класс, объявленный в нестатическом контексте, типы формальных параметров включают явный экземпляр внешнего класса в качестве первого параметра. Отражаемым конструктором является открытый конструктор класса, представленного этим объектом Class, типы формальных параметров которого совпадают с указанными в parameterTypes.
- Параметры:
-
parameterTypes- массив параметров - Возвращает:
- объект
Constructorоткрытого конструктора, соответствующего указанномуparameterTypes - Выбрасывает:
-
NoSuchMethodException- если соответствующий конструктор не найден, в том числе если этот объектClassпредставляет интерфейс, примитивный тип, класс массива или void. - С:
- 1.1
- См. также:
getDeclaredClasses
public Class<?>[] getDeclaredClasses()
Class, отражающих все классы и интерфейсы, объявленные в качестве членов класса, представленного этим объектом Class. Сюда входят открытые, защищенные, имеющие доступ по умолчанию (на уровне пакета) и закрытые классы и интерфейсы, объявленные этим классом, но не унаследованные классы и интерфейсы. Этот метод возвращает массив длины 0, если класс не объявляет классов или интерфейсов в качестве членов либо если этот объект Class представляет примитивный тип, класс массива или void.- Возвращает:
- массив объектов
Class, представляющих все объявленные члены этого класса - См. Спецификацию языка Java:
- 8.5 Объявления классов и интерфейсов-членов
- С:
- 1.1
getDeclaredFields
public Field[] getDeclaredFields()
Field, отражающих все поля, объявленные классом или интерфейсом, представленным этим объектом Class. Сюда входят открытые, защищенные, имеющие доступ по умолчанию (на уровне пакета) и закрытые поля, но не унаследованные поля. Если этот объект Class представляет класс или интерфейс без объявленных полей, метод возвращает массив длины 0.
Если этот объект Class представляет тип массива, примитивный тип или void, метод возвращает массив длины 0.
Элементы возвращаемого массива не отсортированы и не имеют определенного порядка.
- Возвращает:
- массив объектов
Field, представляющих все объявленные поля этого класса - См. Спецификацию языка Java:
- 8.2 Члены класса
8.3 Объявления полей
- С:
- 1.1
getRecordComponents
public RecordComponent[] getRecordComponents()
RecordComponent, представляющих все компоненты record-класса, либо null, если этот класс не является record-классом. Компоненты возвращаются в том же порядке, в котором они объявлены в заголовке record. Массив пуст, если у этого record-класса нет компонентов. Если класс не является record-классом, то есть если isRecord() возвращает false, этот метод возвращает null. И наоборот, если isRecord() возвращает true, этот метод возвращает ненулевое значение.
- Примечание к API:
-
Следующий метод можно использовать для поиска канонического конструктора record:
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, представляющих все компоненты этого record-класса, либоnull, если этот класс не является record-классом - См. Спецификацию языка Java:
- 8.10 Record-классы
- С:
- 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), он включается в возвращаемый массив. Если у record-класса есть канонический конструктор (JLS 8.10.4.1, 8.10.4.2), он включается в возвращаемый массив. Этот метод возвращает массив длины 0, если этот объект 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- если поле с указанным именем не найдено. -
NullPointerException- еслиnameимеет значениеnull - См. Спецификацию языка 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- массив параметров - Возвращает:
- объект
Methodдля метода этого класса, соответствующего указанным имени и параметрам - Выбрасывает:
-
NoSuchMethodException- если соответствующий метод не найден. -
NullPointerException- еслиnameимеет значениеnull - См. Спецификацию языка Java:
- 8.2 Члены класса
8.4 Объявления методов
- С:
- 1.1
getDeclaredConstructor
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException
Constructor, отражающий указанный конструктор класса, представленного этим объектом Class. Параметр parameterTypes — это массив объектов Class, задающих типы формальных параметров конструктора в порядке объявления. Если этот объект Class представляет внутренний класс, объявленный в нестатическом контексте, типы формальных параметров включают явный экземпляр внешнего класса в качестве первого параметра.- Параметры:
-
parameterTypes- массив параметров - Возвращает:
- Объект
Constructorдля конструктора с указанным списком параметров - Выбрасывает:
-
NoSuchMethodException- если соответствующий конструктор не найден, в том числе если этот объектClassпредставляет интерфейс, примитивный тип, класс массива или void. - С:
- 1.1
- См. также:
getResourceAsStream
public InputStream getResourceAsStream(String name)
Если этот класс находится в именованном Module, метод попытается найти ресурс в модуле. Для этого вызывается метод загрузчика классов модуля findResource(String,String) с именем модуля и абсолютным именем ресурса. На ресурсы в именованных модулях распространяются правила инкапсуляции, заданные методом Module getResourceAsStream, поэтому этот метод возвращает null, если ресурс не является ресурсом «.class» и находится в пакете, открытом для модуля вызывающего кода.
В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с заданным классом, реализуются загрузчиком классов, определившим этот класс. Этот метод делегирует вызов загрузчику классов данного объекта Class. Если этот объект Class был загружен загрузчиком классов начальной загрузки, метод делегирует вызов ClassLoader.getSystemResourceAsStream(String).
Перед делегированием из заданного имени ресурса формируется абсолютное имя ресурса по следующему алгоритму:
- Если
nameначинается с'/'('\u002f'), абсолютным именем ресурса является частьname, следующая за'/'. - В противном случае абсолютное имя имеет следующий формат:
modified_package_name/nameЗдесь
modified_package_name— это имя пакета данного объекта, в котором'/'заменено на'.'('\u002e').
- Параметры:
-
name- имя нужного ресурса - Возвращает:
- объект
InputStream;null, если ресурс с таким именем не найден или находится в пакете, который не открыт как минимум для модуля вызывающего кода. - Выбрасывает:
-
NullPointerException- еслиnameимеет значениеnull - С:
- 1.1
- См. также:
getResource
public URL getResource(String name)
Если этот класс находится в именованном Module, метод попытается найти ресурс в модуле. Для этого вызывается метод загрузчика классов модуля findResource(String,String) с именем модуля и абсолютным именем ресурса. На ресурсы в именованных модулях распространяются правила инкапсуляции, заданные методом Module getResourceAsStream, поэтому этот метод возвращает null, если ресурс не является ресурсом «.class» и находится в пакете, открытом для модуля вызывающего кода.
В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с заданным классом, реализуются загрузчиком классов, определившим этот класс. Этот метод делегирует вызов загрузчику классов данного объекта Class. Если этот объект Class был загружен загрузчиком классов начальной загрузки, метод делегирует вызов ClassLoader.getSystemResource(String).
Перед делегированием из заданного имени ресурса формируется абсолютное имя ресурса по следующему алгоритму:
- Если
nameначинается с'/'('\u002f'), абсолютным именем ресурса является частьname, следующая за'/'. - В противном случае абсолютное имя имеет следующий формат:
modified_package_name/nameЗдесь
modified_package_name— это имя пакета данного объекта, в котором'/'заменено на'.'('\u002e').
- Параметры:
-
name- имя нужного ресурса - Возвращает:
- объект
URL;null, если ресурс с таким именем не найден, его невозможно обнаружить с помощью URL или он находится в пакете, который не открыт как минимум для модуля вызывающего кода. - Выбрасывает:
-
NullPointerException- еслиnameимеет значениеnull - С:
- 1.1
getProtectionDomain
public ProtectionDomain getProtectionDomain()
ProtectionDomain этого класса.- Возвращает:
- домен защиты этого класса
- С:
- 1.2
- См. также:
desiredAssertionStatus
public boolean desiredAssertionStatus()
- Примечание к API:
- Немногим программистам понадобится этот метод; он предоставлен для нужд самой JDK. (Он позволяет классу определить в момент инициализации, следует ли включить утверждения.) Обратите внимание, что этот метод не гарантирует возврат фактического статуса утверждений, связанного с указанным классом в момент его инициализации или который будет с ним связан при инициализации.
- Возвращает:
- требуемый статус утверждений указанного класса.
- С:
- 1.4
- См. также:
isEnum
public boolean isEnum()
Enum сам по себе не является enum-классом. Также обратите внимание: если константа enum объявлена с телом класса, классом объекта этой константы enum является анонимный класс, а не класс объявляющего enum-класса. Метод Enum.getDeclaringClass() константы enum можно использовать для получения класса enum-класса, объявившего эту константу.- Возвращает:
- true тогда и только тогда, когда этот класс объявлен в исходном коде как enum
- См. Спецификацию языка Java:
- 8.9.1 Константы enum
- С:
- 1.5
isRecord
public boolean isRecord()
true тогда и только тогда, когда этот класс является record-классом. Непосредственным суперклассом record-класса является java.lang.Record. Record-класс является финальным. У record-класса может быть ноль или более компонентов; getRecordComponents() возвращает ненулевое, но потенциально пустое значение для record-класса.
Обратите внимание, что класс Record не является record-классом, поэтому вызов этого метода для класса Record возвращает false.
- Возвращает:
- true тогда и только тогда, когда этот класс является record-классом; в противном случае — false
- См. Спецификацию языка Java:
- 8.10 Record-классы
- С:
- 16
getEnumConstants
public T[] getEnumConstants()
- Возвращает:
- массив, содержащий значения, составляющие класс перечисления, представленный этим объектом
Class, в порядке их объявления, или null, если этот объектClassне представляет класс перечисления - См. Спецификацию языка Java:
- 8.9.1 Константы перечисления
- Начиная с версии:
- 1.5
cast
public T cast(Object obj)
Class.- Параметры:
-
obj— объект, который требуется привести - Возвращает:
- объект после приведения или 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)
Обратите внимание, что любая аннотация, возвращенная этим методом, является аннотацией объявления.
- Определено в:
-
getAnnotationв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую требуется найти и вернуть, если она присутствует- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- аннотацию этого элемента для указанного типа аннотации, если она присутствует у этого элемента; в противном случае возвращает null
- Вызывает:
-
NullPointerException— если указанный класс аннотации равен null - Начиная с версии:
- 1.5
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Значение, возвращаемое этим методом, эквивалентно: getAnnotation(annotationClass) != null
- Определено в:
-
isAnnotationPresentв интерфейсеAnnotatedElement - Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- true, если аннотация указанного типа присутствует у этого элемента; в противном случае false
- Вызывает:
-
NullPointerException— если указанный класс аннотации равен null - Начиная с версии:
- 1.5
getAnnotationsByType
public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
AnnotatedElement.getAnnotation(Class) тем, что определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и, если да, пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию. Вызывающий этот метод может изменять возвращенный массив; это никак не повлияет на массивы, возвращаемые другим вызывающим. Обратите внимание, что любые аннотации, возвращенные этим методом, являются аннотациями объявления.
- Определено в:
-
getAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую требуется найти и вернуть, если она присутствует- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента указанного типа, связанные с этим элементом; в противном случае массив нулевой длины
- Вызывает:
-
NullPointerException— если указанный класс аннотации равен null - Начиная с версии:
- 1.8
getAnnotations
public Annotation[] getAnnotations()
Обратите внимание, что любые аннотации, возвращенные этим методом, являются аннотациями объявления.
- Определено в:
-
getAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, присутствующие у этого элемента
- Начиная с версии:
- 1.5
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращенная этим методом, является аннотацией объявления.
- Определено в:
-
getDeclaredAnnotationв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую требуется найти и вернуть, если она присутствует непосредственно- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- аннотацию этого элемента для указанного типа аннотации, если она присутствует у этого элемента непосредственно; в противном случае возвращает null
- Вызывает:
-
NullPointerException— если указанный класс аннотации равен null - Начиная с версии:
- 1.8
getDeclaredAnnotationsByType
public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
AnnotatedElement.getDeclaredAnnotation(Class) тем, что определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и, если да, пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию, если она присутствует. Вызывающий этот метод может изменять возвращенный массив; это никак не повлияет на массивы, возвращаемые другим вызывающим. Обратите внимание, что любые аннотации, возвращенные этим методом, являются аннотациями объявления.
- Определено в:
-
getDeclaredAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую требуется найти и вернуть, если она присутствует непосредственно или косвенно- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента указанного типа, непосредственно или косвенно присутствующие у этого элемента; в противном случае массив нулевой длины
- Вызывает:
-
NullPointerException— если указанный класс аннотации равен null - Начиная с версии:
- 1.8
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Обратите внимание, что любые аннотации, возвращенные этим методом, являются аннотациями объявления.
- Определено в:
-
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 представляет класс или интерфейс, объявление которого явно не указывает аннотированные суперинтерфейсы, возвращается массив длины 0.
Если этот объект Class представляет класс Object, тип массива, примитивный тип или void, возвращается массив длины 0.
- Возвращает:
- массив, представляющий суперинтерфейсы
- Начиная с версии:
- 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 участником одного гнезда с классом или интерфейсом, представленным этим объектом 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, представляющих непосредственные подинтерфейсы или подклассы, которым разрешено расширять или реализовывать этот класс или интерфейс, если он является запечатанным. Порядок таких элементов не определен. Массив пуст, если у этого запечатанного класса или интерфейса нет разрешенных подклассов. Если этот объект Class представляет примитивный тип, void, тип массива или незапечатанный класс либо интерфейс, то есть isSealed() возвращает false, этот метод возвращает null. И наоборот, если isSealed() возвращает true, этот метод возвращает ненулевое значение. Для каждого класса или интерфейса C, записанного как разрешенный непосредственный подинтерфейс или подкласс этого класса или интерфейса, метод пытается получить объект Class для C (используя определяющий загрузчик классов текущего объекта Class). Объекты Class, которые удалось получить и которые являются непосредственными подинтерфейсами или подклассами этого класса или интерфейса, указываются элементами возвращаемого массива. Если объект Class получить не удается, он без уведомления пропускается и не включается в результирующий массив.- Возвращает:
- массив объектов
Class, представляющих разрешенные подклассы этого класса или интерфейса, илиnull, если этот класс или интерфейс не является запечатанным. - См. Спецификацию языка Java:
- 8.1 Объявления классов
9.1 Объявления интерфейсов
- Начиная с версии:
- 17
isSealed
public boolean isSealed()
true тогда и только тогда, когда этот объект Class представляет запечатанный класс или интерфейс. Если этот объект Class представляет примитивный тип, void или тип массива, метод возвращает false. У запечатанного класса или интерфейса есть некоторое количество разрешенных подклассов (возможно, ноль); для запечатанного класса или интерфейса метод getPermittedSubclasses() возвращает ненулевое, хотя, возможно, и пустое значение.- Возвращает:
-
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Class.html