Spec-Zone.ru › OpenJDK 21

Класс Class

java.lang.Object
java.lang.Class
Параметры типа:
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) с помощью литерала класса. Например:
System.out.println("The name of class Foo is: "+Foo.class.getName());

Некоторые методы класса Class показывают, была ли декларация класса или интерфейса в исходном коде Java вложена в другую декларацию. Другие методы описывают, как класс или интерфейс расположен в гнезде. Гнездо — это набор классов и интерфейсов в одном пакете времени выполнения, которые позволяют взаимно обращаться к своим private членам. Классы и интерфейсы известны как соседствующие классы. Один соседствующий класс выступает в качестве хозяина гнезда и перечисляет других соседствующих классов, которые принадлежат к гнезду; каждый из них, в свою очередь, записывает себя как хозяина гнезда. Классы и интерфейсы, принадлежащие гнезду, включая его хозяина, определяются при генерации файлов class, например, компилятор Java обычно записывает класс верхнего уровня как хозяина гнезда, где другие члены — это классы и интерфейсы, декларации которых вложены в декларацию класса верхнего уровня.

Скрытые классы

Класс или интерфейс, созданный с помощью вызова Lookup::defineHiddenClass, является скрытым классом или интерфейсом. Все виды классов, включая классы перечислений и классы записей, могут быть скрытыми классами; все виды интерфейсов, включая аннотационные интерфейсы, могут быть скрытыми интерфейсами. Имя скрытого класса или интерфейса не является именем в бинарном формате, что означает следующее:
  • К скрытому классу или интерфейсу нельзя обратиться через константные пулы других классов и интерфейсов.
  • Скрытый класс или интерфейс нельзя описать в номинальной форме с помощью Class::describeConstable, ClassDesc::of или ClassDesc::ofDescriptor.
  • Скрытый класс или интерфейс нельзя найти с помощью Class::forName или ClassLoader::loadClass.
Скрытый класс или интерфейс никогда не является классом массива, но может быть типом элемента массива. Во всех других отношениях тот факт, что класс или интерфейс скрыт, не влияет на характеристики, раскрываемые методами класса Class.

Безымянные классы

Файл class, представляющий безымянный классПРЕВИЗЮ, генерируется компилятором Java из исходного файла для безымянного класса. Объект Class, представляющий безымянный класс, является верхнеуровневым, синтетическим и final. Хотя у безымянного класса нет имени в исходном коде Java, несколько методов, связанных с именами, в объекте java.lang.Class, представляющем безымянный класс, возвращают непустые результаты. Обычно компилятор Java, начиная с исходного файла для безымянного класса, скажем, HelloWorld.java, создает аналогичный файл class, HelloWorld.class, где класс, хранящийся в этом файле class, называется "HelloWorld", что соответствует базовым именам исходных и файлов class. Для объекта Class безымянного класса HelloWorld методы получения имени и имени типа возвращают результаты, равные "HelloWorld". Простым именем такого безымянного класса является пустая строка, а каноническое имя — null.
См. Спецификацию языка Java:
15.8.2 Литералы классов
С момента:
1.0
См. также:
  • ClassLoader.defineClass(byte[], int, int)
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.invoke.TypeDescriptor

TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>, TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>,M extends TypeDescriptor.OfMethod<F,M>>

Краткое описание методов

Modifier and Type Method Description
Set<AccessFlag> accessFlags()
Возвращает неизменяемый набор флагов доступа для этого класса, возможно пустой.
Class<?> arrayType()
Возвращает Class для типа массива, тип компонента которого описывается этим Class.
<U> Class<? extends U> asSubclass(Class<U> clazz)
Преобразует этот Class объект для представления подкласса класса, представленного указанным объектом класса.
T cast(Object obj)
Преобразует объект в класс или интерфейс, представленный этим Class объектом.
Class<?> componentType()
Возвращает тип компонента этого Class, если он описывает тип массива, или null в противном случае.
Optional<ClassDesc> describeConstable()
Возвращает номинальный дескриптор для этого экземпляра, если он может быть создан, или пустой Optional, если это невозможно.
String descriptorString()
Возвращает строку-дескриптор сущности (класс, интерфейс, массив классов, примитивный тип или void), представленный этим Class объектом.
boolean desiredAssertionStatus()
Возвращает статус утверждения, который был бы назначен этому классу, если бы он был инициализирован в момент вызова этого метода.
static Class<?> forName(Module module, String name)
Возвращает Class с заданным бинарным именем в заданном модуле.
static Class<?> forName(String className)
Возвращает объект Class, связанный с классом или интерфейсом с заданным строковым именем.
static Class<?> forName(String name, boolean initialize, ClassLoader loader)
Возвращает объект Class, связанный с классом или интерфейсом с заданным строковым именем, используя указанный загрузчик классов.
AnnotatedType[] getAnnotatedInterfaces()
Возвращает массив объектов AnnotatedType, которые представляют использование типов для указания суперинтерфейсов сущности, представленной этим объектом Class.
AnnotatedType getAnnotatedSuperclass()
Возвращает объект AnnotatedType, который представляет использование типа для указания суперкласса сущности, представленной этим объектом Class.
<A extends Annotation>
A
getAnnotation(Class<A> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.
Annotation[] getAnnotations()
Возвращает аннотации, которые присутствуют на этом элементе.
<A extends Annotation>
A[]
getAnnotationsByType(Class<A> annotationClass)
Возвращает аннотации, которые ассоциированы с этим элементом.
String getCanonicalName()
Возвращает каноническое имя базового класса, как определено в Спецификации языка Java.
Class<?>[] getClasses()
Возвращает массив, содержащий объекты Class, представляющие все публичные классы и интерфейсы, которые являются членами класса, представленного этим объектом Class.
ClassLoader getClassLoader()
Возвращает загрузчик классов для класса.
Class<?> getComponentType()
Возвращает Class, представляющий тип компонента массива.
Constructor<T> getConstructor(Class<?>... parameterTypes)
Возвращает объект Constructor, который отражает указанный публичный конструктор класса, представленного этим объектом Class.
Constructor<?>[] getConstructors()
Возвращает массив, содержащий объекты Constructor, отражающие все публичные конструкторы класса, представленного этим объектом Class.
<A extends Annotation>
A
getDeclaredAnnotation(Class<A> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null.
Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно присутствуют на этом элементе.
<A extends Annotation>
A[]
getDeclaredAnnotationsByType(Class<A> annotationClass)
Возвращает аннотацию(и) этого элемента для указанного типа, если такие аннотации либо непосредственно присутствуют, либо косвенно присутствуют.
Class<?>[] getDeclaredClasses()
Возвращает массив объектов Class, отражающих все классы и интерфейсы, объявленные как члены класса, представленного этим объектом Class.
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
Возвращает объект Constructor, который отражает указанный конструктор класса, представленного этим объектом Class.
Constructor<?>[] getDeclaredConstructors()
Возвращает массив объектов Constructor, отражающих все конструкторы, явно или неявно объявленные классом, представленным этим объектом Class.
Field getDeclaredField(String name)
Возвращает объект Field, который отражает указанное объявленное поле класса или интерфейса, представленного этим объектом Class.
Field[] getDeclaredFields()
Возвращает массив объектов Field, отражающих все объявленные поля класса или интерфейса, представленного этим объектом Class.
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
Возвращает объект 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(String name)
Возвращает объект Field, который отражает указанное публичное поле члена класса или интерфейса, представленного этим объектом Class.
Field[] getFields()
Возвращает массив, содержащий объекты Field, отражающие все доступные публичные поля класса или интерфейса, представленного этим объектом Class.
Type[] getGenericInterfaces()
Возвращает интерфейсы, непосредственно реализуемые классом или интерфейсом, представленным этим объектом Class.
Type getGenericSuperclass()
Возвращает Type, представляющий непосредственный суперкласс сущности (класс, интерфейс, примитивный тип или void), представленной этим объектом Class.
Class<?>[] getInterfaces()
Возвращает интерфейсы, непосредственно реализуемые классом или интерфейсом, представленным этим объектом Class.
Method getMethod(String name, Class<?>... parameterTypes)
Возвращает объект Method, который отражает указанный публичный член метода класса или интерфейса, представленного этим объектом Class.
Method[] getMethods()
Возвращает массив, содержащий объекты Method, отражающие все публичные методы класса или интерфейса, представленного этим объектом Class, включая объявленные классом или интерфейсом и унаследованные от суперклассов и суперинтерфейсов.
int getModifiers()
Возвращает модификаторы языка Java для этого класса или интерфейса, закодированные в целочисленном значении.
Module getModule()
Возвращает модуль, членом которого является этот класс или интерфейс.
String getName()
Возвращает имя сущности (класс, интерфейс, класс массива, примитивный тип или void), представленной этим объектом Class.
Class<?> getNestHost()
Возвращает родительский элемент вложенного класса (nest) для класса или интерфейса, представленного этим объектом Class.
Class<?>[] getNestMembers()
Возвращает массив объектов Class, представляющих все классы и интерфейсы, являющиеся членами вложенного класса (nest), к которому принадлежит класс или интерфейс, представленный этим объектом Class.
Package getPackage()
Возвращает пакет данного класса.
String getPackageName()
Возвращает полное имя пакета.
Class<?>[] getPermittedSubclasses()
Возвращает массив объектов Class, представляющих непосредственные подинтерфейсы или подклассы, разрешенные для расширения или реализации этого класса или интерфейса, если он является запечатанным.
ProtectionDomain getProtectionDomain()
Возвращает ProtectionDomain этого класса.
RecordComponent[] getRecordComponents()
Возвращает массив объектов RecordComponent, представляющих все компоненты записи этого класса записи, или null, если этот класс не является классом записи.
URL getResource(String name)
Находит ресурс с заданным именем.
InputStream getResourceAsStream(String name)
Находит ресурс с заданным именем.
Object[] getSigners()
Возвращает подписывающие лица этого класса.
String getSimpleName()
Возвращает простое имя базового класса, как задано в исходном коде.
Class<? super T> getSuperclass()
Возвращает Class, представляющий непосредственный суперкласс сущности (класс, интерфейс, примитивный тип или void), представленной этим объектом Class.
String getTypeName()
Возвращает информационную строку для имени этого класса или интерфейса.
TypeVariable<Class<T>>[] getTypeParameters()
Возвращает массив объектов TypeVariable, представляющих переменные типов, объявленные общим объявлением, представленным этим объектом GenericDeclaration, в порядке объявления.
boolean isAnnotation()
Возвращает true, если этот объект Class представляет собой интерфейс аннотации.
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация для указанного типа присутствует на этом элементе, иначе false.
boolean isAnonymousClass()
Возвращает true, если и только если базовый класс является анонимным классом.
boolean isArray()
Определяет, представляет ли этот объект Class класс массива.
boolean isAssignableFrom(Class<?> cls)
Определяет, является ли класс или интерфейс, представленный этим объектом Class, таким же, как, или является суперклассом или суперинтерфейсом, класса или интерфейса, представленного указанным параметром Class.
boolean isEnum()
Возвращает true, если и только если этот класс был объявлен как перечисление в исходном коде.
boolean isHidden()
Возвращает true, если и только если базовый класс является скрытым классом.
boolean isInstance(Object obj)
Определяет, совместим ли указанный Object с объектом, представленным этим объектом Class для присваивания.
boolean isInterface()
Определяет, представляет ли этот объект Class тип интерфейса.
boolean isLocalClass()
Возвращает true, если и только если базовый класс является локальным классом.
boolean isMemberClass()
Возвращает true, если и только если базовый класс является вложенным классом.
boolean isNestmateOf(Class<?> c)
Определяет, является ли указанный Class вложенным классом (nest) для класса или интерфейса, представленного этим объектом Class.
boolean isPrimitive()
Определяет, представляет ли указанный объект Class примитивный тип.
boolean isRecord()
Возвращает true, если и только если этот класс является классом записи.
boolean isSealed()
Возвращает true, если и только если этот объект Class представляет собой запечатанный класс или интерфейс.
boolean isSynthetic()
Возвращает true, если и только если этот класс имеет установленный битовый модификатор synthetic.
boolean isUnnamedClass()
Предварительный просмотр.
Возвращает true, если и только если базовый класс является безымянным классом.
T newInstance()
Устарело.
Этот метод распространяет любое исключение, выброшенное нулевым конструктором, включая исключение с проверкой.
String toGenericString()
Возвращает строку, описывающую этот объект Class, включая информацию о модификаторах и параметрах типов.
String toString()
Преобразует объект в строку.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробности методов

toString

public String toString()
Преобразует объект в строку. Строковое представление — это строка "class" или "interface", за которой следует пробел, а затем имя класса в формате, возвращаемом getName. Если этот Class объект представляет примитивный тип, этот метод возвращает имя примитивного типа. Если этот Class объект представляет void, этот метод возвращает "void". Если этот Class объект представляет тип массива, этот метод возвращает "class ", за которым следует getName.
Overrides:
toString в классе Object
Возвращает:
строковое представление этого Class объекта.

toGenericString

public String toGenericString()
Возвращает строку, описывающую этот Class, включая информацию о модификаторах и параметрах типа. Строка отформатирована как список модификаторов типа, если таковые имеются, за которым следует тип (пустая строка для примитивных типов и class, enum, interface, @interface или record, соответственно), за которым следует имя типа, за которым следует список параметров типа в угловых скобках через запятую, если таковые имеются, включая информативные границы для параметров типа, если таковые имеются. Для разделения модификаторов друг от друга и разделения любых модификаторов от вида типа используется пробел. Модификаторы расположены в каноническом порядке. Если параметров типа нет, список параметров типа опускается. Для типа массива строка начинается с имени типа, за которой следует список параметров типа в угловых скобках через запятую, если таковые имеются, за которым следует последовательность [] символов, один набор скобок на каждую размерность массива.

Обратите внимание, что поскольку генерируется информация о представлении типа в runtime, могут быть присутствовать модификаторы, которые отсутствуют в исходном коде или недопустимы в исходном коде.

Возвращает:
строку, описывающую этот Class, включая информацию о модификаторах и параметрах типа
С:
1.8

forName

public static Class<?> forName(String className) throws ClassNotFoundException
Возвращает объект Class, связанный с классом или интерфейсом с заданным именем в виде строки. Вызов этого метода эквивалентен:
Class.forName(className, true, currentLoader)
где currentLoader обозначает определяющий загрузчик классов текущего класса.

Например, следующий фрагмент кода возвращает объект runtime 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, класс загружается через загрузчик классов Bootstrap. Класс инициализируется только если параметр initialize равен true и если он еще не был инициализирован ранее.

Этот метод не может использоваться для получения любых объектов Class, представляющих примитивные типы или void, скрытых классов или интерфейсов, или классов массивов, чье элементный тип — скрытый класс или интерфейс. Если name обозначает примитивный тип или void, например I, будет предпринята попытка найти пользовательский класс в безымянном пакете, имя которого — I.

Чтобы получить объект 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 - если класс не может быть найден указанным загрузчиком классов
SecurityException - если присутствует менеджер безопасности, и loader равен null, и загрузчик классов вызывающего метода не null, и у вызывающего метода нет RuntimePermission("getClassLoader")
См. Спецификацию языка Java:
12.2 Загрузка классов и интерфейсов
12.3 Связывание классов и интерфейсов
12.4 Инициализация классов и интерфейсов
13.1 Формат двоичного файла
С:
1.2
См. также:
  • forName(String)
  • ClassLoader

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 - если происходит сбой при связывании
SecurityException -
  • если вызывающий метод не является указанным модулем и разрешение RuntimePermission("getClassLoader") отказано; или
  • доступ к содержимому модуля запрещен. Например, проверка разрешений выполняется, когда загрузчик классов вызывает ModuleReader.open(String) для чтения байтов файла класса в модуле.
См. Спецификацию языка Java:
12.2 Загрузка классов и интерфейсов
12.3 Связывание классов и интерфейсов
С:
9

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 - если инициализация, вызванная этим методом, терпит неудачу.
SecurityException - Если менеджер безопасности, s, присутствует и загрузчик классов вызывающего класса не совпадает и не является предком загрузчика класса для текущего класса, и вызов s.checkPackageAccess() отказывается предоставить доступ к пакету этого класса.

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 - объект для проверки
Возвращает:
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 быть присвоены объектам этого класса
Бросает:
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 примитивный тип.

Существует девять предопределённых объектов Class для представления восьми примитивных типов и void. Они создаются виртуальной машиной Java и имеют те же имена, что и примитивные типы, которые они представляют, а именно boolean, byte, char, short, int, long, float и double.

К этим объектам можно получить доступ только через следующие статические переменные public static final, и они являются единственными объектами Class, для которых этот метод возвращает true.

Определяется в:
isPrimitive в интерфейсе TypeDescriptor.OfField<T>
Возвращает:
true тогда и только тогда, когда этот класс представляет примитивный тип
С:
1.1
См. также:
  • Boolean.TYPE
  • Character.TYPE
  • Byte.TYPE
  • Short.TYPE
  • Integer.TYPE
  • Long.TYPE
  • Float.TYPE
  • Double.TYPE
  • Void.TYPE

isAnnotation

public boolean isAnnotation()
Возвращает true, если этот объект Class представляет интерфейс аннотации. Обратите внимание, что если этот метод возвращает true, isInterface() также вернёт true, так как все интерфейсы аннотаций также являются интерфейсами.
Возвращает:
true, если этот объект Class представляет интерфейс аннотации; false в противном случае
С:
1.5

isSynthetic

public boolean isSynthetic()
Возвращает true тогда и только тогда, когда у этого класса установлен бит синтетического модификатора.
Возвращает:
true тогда и только тогда, когда у этого класса установлен бит синтетического модификатора
См. Спецификацию языка Java:
13.1 Формат двоичного файла
См. Спецификацию виртуальной машины Java:
4.1 Структура ClassFile
С:
1.5
См. также:
  • Моделирование языка программирования Java и JVM в базовой рефлексии

getName

public String getName()
Возвращает имя сущности (класс, интерфейс, класс массива, примитивный тип или void), представленной этим Class объектом.

Если этот Class объект представляет класс или интерфейс, а не класс массива, то:

  • Если класс или интерфейс не скрыт, то возвращается бинарное имя класса или интерфейса.
  • Если класс или интерфейс скрыт, то результат — строка вида: N + '/' + <suffix>, где N — бинарное имя, указанное в файле class, переданном в Lookup::defineHiddenClass, а <suffix> — неопределённое имя.

Если этот Class объект представляет класс массива, то результат — строка, состоящая из одного или нескольких символов '[', представляющих глубину вложенности массива, за которой следует тип элемента, закодированный в соответствии со следующей таблицей:

Типы элементов и их кодировки
Тип элемента Кодировка
boolean Z
byte B
char C
класс или интерфейс с бинарным именем N LN;
double D
float F
int I
long J
short S

Если этот 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()
Возвращает загрузчик классов для класса. Некоторые реализации могут использовать null для представления загрузчика базового класса. Этот метод вернёт null в таких реализациях, если этот класс загружен базовым загрузчиком классов.

Если этот Class объект представляет примитивный тип или void, возвращается null.

Возвращает:
загрузчик классов, который загрузил класс или интерфейс, представленный этим Class объектом.
Исключения:
SecurityException - если присутствует менеджер безопасности, а загрузчик класса вызывающего не является null и не совпадает с загрузчиком класса, чьё имя запрашивается, или не является его предком, и у вызывающего нет разрешения RuntimePermission("getClassLoader")
См. также:
  • ClassLoader
  • SecurityManager.checkPermission(java.security.Permission)
  • RuntimePermission

getModule

public Module getModule()
Возвращает модуль, к которому принадлежит этот класс или интерфейс. Если этот класс представляет тип массива, то этот метод возвращает Module для типа элемента. Если этот класс представляет примитивный тип или void, то возвращается объект Module для java.base модуля. Если этот класс находится в безымянном модуле, то возвращается безымянный Module загрузчика класса для этого класса.
Возвращает:
модуль, к которому принадлежит этот класс или интерфейс
С:
9

getTypeParameters

public TypeVariable<Class<T>>[] getTypeParameters()
Возвращает массив TypeVariable объектов, представляющих тип переменных, объявленных универсальным объявлением, представленным этим GenericDeclaration объектом, в порядке объявления. Возвращает массив длины 0, если базовое универсальное объявление не объявляет тип переменных.
Задано:
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 Virtual Machine.
TypeNotPresentException - если какой-либо обобщённый суперинтерфейс ссылается на не существующее объявление типа.
MalformedParameterizedTypeException - если любой из обобщённых суперинтерфейсов ссылается на параметризованный тип, который нельзя создать ни по какой причине.
С:
1.5

getComponentType

public Class<?> getComponentType()
Возвращает Class, представляющий тип компонента массива. Если этот класс не представляет класс массива, этот метод возвращает null.
Возвращает:
Class, представляющий тип компонента этого класса, если этот класс является массивом
С:
1.1
См. также:
  • Array

getModifiers

public int getModifiers()
Возвращает модификаторы языка Java для этого класса или интерфейса, закодированные в целое число. Модификаторы состоят из констант виртуальной машины Java для 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 Virtual Machine.

Возвращает:
int, представляющий модификаторы этого класса
См. Спецификацию языка Java:
8.1.1 Классовые модификаторы
9.1.1. Модификаторы интерфейсов
См. Спецификацию виртуальной машины Java:
4.1 Структура ClassFile
С:
1.1
См. также:
  • Modifier
  • accessFlags()
  • Моделирование языка программирования Java и JVM в базовом отражении

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
См. также:
  • getModifiers()

getSigners

public Object[] getSigners()
Получает подписи этого класса.
Возвращает:
подписи этого класса, или null, если подписей нет. В частности, этот метод возвращает null, если этот Class объект представляет примитивный тип или void.
С:
1.1

getEnclosingMethod

public Method getEnclosingMethod() throws SecurityException
Если этот Class объект представляет локальный или анонимный класс внутри метода, возвращает объект Method, представляющий метод непосредственного внешнего обрамления подлежащего класса. В противном случае возвращает null. В частности, этот метод возвращает null, если подлежащий класс является локальным или анонимным классом, непосредственно заключённым в объявлении класса или интерфейса, инициализаторе экземпляра или статическом инициализаторе.
Возвращает:
метод непосредственного внешнего обрамления подлежащего класса, если этот класс является локальным или анонимным; в противном случае null.
Исключения:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются какие-либо из следующих условий:
  • загрузчик класса вызывающего не совпадает с загрузчиком класса внешнего класса, и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") отказывает в доступе к методам внутри внешнего класса
  • загрузчик класса вызывающего не такой же или не предок загрузчика класса внешнего класса, и вызов метода s.checkPackageAccess() отказывает в доступе к пакету внешнего класса
С:
1.5

getEnclosingConstructor

public Constructor<?> getEnclosingConstructor() throws SecurityException
Если этот Class объект представляет локальный или анонимный класс внутри конструктора, возвращает объект Constructor, представляющий непосредственно окружающий конструктор базового класса. В противном случае возвращает null. В частности, этот метод возвращает null, если базовый класс является локальным или анонимным классом, непосредственно заключённым в объявлении класса или интерфейса, инициализаторе экземпляра или статическом инициализаторе.
Возвращает:
непосредственно окружающий конструктор базового класса, если этот класс является локальным или анонимным; в противном случае null.
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются следующие условия:
  • загрузчик класса вызывающего не совпадает с загрузчиком класса окружающего класса, и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") запрещает доступ к конструкторам внутри окружающего класса
  • загрузчик класса вызывающего не совпадает с загрузчиком класса окружающего класса или не является его предком, и вызов метода s.checkPackageAccess() запрещает доступ к пакету окружающего класса
С:
1.5

getDeclaringClass

public Class<?> getDeclaringClass() throws SecurityException
Если класс или интерфейс, представленный этим Class объектом, является членом другого класса, возвращает Class объект, представляющий класс, в котором он был объявлен. Этот метод возвращает null, если этот класс или интерфейс не является членом любого другого класса. Если этот Class объект представляет класс массива, примитивный тип или void, этот метод возвращает null.
Возвращает:
класс, объявляющий этот класс
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего не совпадает с загрузчиком класса объявляющего класса или не является его предком, и вызов метода s.checkPackageAccess() запрещает доступ к пакету объявляющего класса
С:
1.1

getEnclosingClass

public Class<?> getEnclosingClass() throws SecurityException
Возвращает непосредственно окружающий класс базового класса. Если базовый класс является верхнеуровневым классом, этот метод возвращает null.
Возвращает:
непосредственно окружающий класс базового класса
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего не совпадает с загрузчиком класса окружающего класса или не является его предком, и вызов метода s.checkPackageAccess() запрещает доступ к пакету окружающего класса
С:
1.5

getSimpleName

public String getSimpleName()
Возвращает простое имя базового класса, как указано в исходном коде. Пустая строка возвращается, если базовый класс является анонимным или неопределённымПРОСМОТР. Синтетический класс, отсутствующий в исходном коде, может иметь непустое имя, включающее специальные символы, такие как "$".

Простое имя класса массива — это простое имя компонента типа с присоединённым "[]". В частности, простое имя класса массива, компоненты которого являются анонимными, — это "[]".

Возвращает:
простое имя базового класса
С:
1.5

getTypeName

public String getTypeName()
Возвращает информативную строку для имени этого класса или интерфейса.
Определено в:
getTypeName в интерфейсе Type
Возвращает:
информативную строку для имени этого класса или интерфейса
С:
1.8

getCanonicalName

public String getCanonicalName()
Возвращает каноническое имя базового класса, как определено в Спецификации языка Java. Возвращает null, если у базового класса нет канонического имени. К классам без канонических имён относятся:
  • локальный класс
  • анонимный класс
  • неопределённый классПРОСМОТР
  • скрытый класс
  • массив, у которого тип компонента не имеет канонического имени
Каноническое имя примитивного класса — это ключевое слово соответствующего примитивного типа (byte, short, char, int и т. д.).

Тип массива имеет каноническое имя только тогда, когда его компонентный тип имеет каноническое имя. Когда тип массива имеет каноническое имя, оно равно каноническому имени компонентного типа, за которым следует "[]".

Возвращает:
каноническое имя базового класса, если оно существует, и null в противном случае.
См. Спецификацию языка Java:
6.7 Полные имена и канонические имена
С:
1.5

isUnnamedClass

public boolean isUnnamedClass()
isUnnamedClass это обзорная API платформы Java.
Функции предварительного просмотра могут быть удалены в будущих выпусках или доработаны в постоянные функции платформы Java.
Возвращает true только в том случае, если базовый класс является неопределённым классом.
Примечание API:
Неименованный класс не является анонимным классом.
Возвращает:
true только в том случае, если базовый класс является неопределённым классом
См. Спецификацию языка Java:
7.3 Единицы компиляции
С:
21

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 объектом. Это включает в себя публичные классы и интерфейсы, унаследованные от суперклассов, и публичные классы и интерфейсы, объявленные классом. Этот метод возвращает массив длины 0, если у этого Class объекта нет публичных членов-классов или интерфейсов. Этот метод также возвращает массив длины 0, если этот Class объект представляет примитивный тип, класс массива или void.
Возвращает:
массив Class объектов, представляющих публичных членов этого класса
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего не совпадает с загрузчиком класса текущего класса или не является его предком, и вызов метода s.checkPackageAccess() запрещает доступ к пакету этого класса.
С:
1.1

getFields

public Field[] getFields() throws SecurityException
Возвращает массив, содержащий Field объекты, отражающие все доступные общедоступные поля класса или интерфейса, представленного этим Class объектом.

Если этот Class объект представляет класс или интерфейс без доступных общедоступных полей, то этот метод возвращает массив длиной 0.

Если этот Class объект представляет класс, то этот метод возвращает общедоступные поля класса и всех его суперклассов и суперинтерфейсов.

Если этот Class объект представляет интерфейс, то этот метод возвращает поля интерфейса и всех его суперинтерфейсов.

Если этот Class объект представляет тип массива, примитивный тип или void, то этот метод возвращает массив длиной 0.

Элементы возвращаемого массива не отсортированы и не расположены в определенном порядке.

Возвращает:
массив Field объектов, представляющих общедоступные поля
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик классов вызывающего класса не совпадает с загрузчиком классов текущего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету этого класса.
См. Спецификацию языка Java:
8.2 Члены класса
8.3 Объявления полей
С:
1.1

getMethods

public Method[] getMethods() throws SecurityException
Возвращает массив, содержащий Method объекты, отражающие все общедоступные методы класса или интерфейса, представленного этим Class объектом, включая те, что объявлены классом или интерфейсом, и те, что унаследованы от суперклассов и суперинтерфейсов.

Если этот Class объект представляет тип массива, то возвращаемый массив содержит Method объект для каждого из общедоступных методов, унаследованных типом массива от Object. Он не содержит Method объект для clone().

Если этот Class объект представляет интерфейс, то возвращаемый массив не содержит никаких неявных методов, объявленных от Object. Таким образом, если в этом интерфейсе или любом из его суперинтерфейсов явно не объявлены методы, то возвращаемый массив имеет длину 0. (Обратите внимание, что Class объект, представляющий класс, всегда имеет общедоступные методы, унаследованные от Object.)

Возвращаемый массив никогда не содержит методы с именами "<init>" или "<clinit>".

Элементы возвращаемого массива не отсортированы и не расположены в определенном порядке.

В общем случае результат вычисляется по следующему 4-ступенчатому алгоритму. Пусть C — класс или интерфейс, представленный этим Class объектом:

  1. Объединение методов состоит из:
    1. Объявленные общедоступные экземпляры и статические методы C, возвращаемые getDeclaredMethods() и отфильтрованные для включения только общедоступных методов.
    2. Если C — класс, отличный от Object, то включить результат применения этого алгоритма рекурсивно к суперклассу C.
    3. Включить результаты применения этого алгоритма рекурсивно ко всем непосредственным суперинтерфейсам C, но включать только методы экземпляров.
  2. Объединение из шага 1 разделяется на подмножества методов с одинаковой сигнатурой (имя, типы параметров) и типом возвращаемого значения.
  3. В каждом таком подмножестве выбираются только наиболее специфичные методы. Пусть метод M — метод из набора методов с одинаковой сигнатурой и типом возвращаемого значения. M является наиболее специфичным, если не существует такого метода N != M из того же набора, такой что N более специфичен, чем M. N более специфичен, чем M, если:
    1. N объявлен классом, а M — интерфейсом; или
    2. N и M объявлены классами или обоими интерфейсами, и тип объявления N такой же или является подтипом типа объявления M (очевидно, если типы объявления M и N являются одним типом, то M и N — один и тот же метод).
  4. Результат этого алгоритма — объединение всех выбранных методов из шага 3.
Примечание API:
В классе может быть более одного метода с определенным именем и типами параметров, потому что, хотя язык Java запрещает классу объявлять несколько методов с одинаковой сигнатурой, но различными типами возвращаемого значения, виртуальная машина Java этого не делает. Эта повышенная гибкость в виртуальной машине может использоваться для реализации различных функций языка. Например, ковариативные возвращаемые значения могут быть реализованы с помощью мостов методов; мост метода и перекрывающий метод имели бы одинаковую сигнатуру, но разные типы возвращаемого значения.
Возвращает:
массив Method объектов, представляющих общедоступные методы этого класса
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик классов вызывающего класса не совпадает с загрузчиком классов текущего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету этого класса.
См. Спецификацию языка Java:
8.2 Члены класса
8.4 Объявления методов
С:
1.1

getConstructors

public Constructor<?>[] getConstructors() throws SecurityException
Возвращает массив, содержащий Constructor объекты, отражающие все общедоступные конструкторы класса, представленного этим Class объектом. Массив длины 0 возвращается, если класс не имеет общедоступных конструкторов, или если класс является классом массива, или если класс отражает примитивный тип или void.
Примечание API:
Хотя этот метод возвращает массив Constructor<T> объектов (т.е. массив конструкторов из этого класса), тип возвращаемого значения этого метода — Constructor<?>[], а не Constructor<T>[], как можно было бы ожидать. Этот менее информативный тип возвращаемого значения необходим, поскольку после возвращения из этого метода массив мог быть изменён для хранения Constructor объектов для различных классов, что нарушило бы гарантии типа Constructor<T>[].
Возвращает:
массив Constructor объектов, представляющих общедоступные конструкторы этого класса
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик классов вызывающего класса не совпадает с загрузчиком классов текущего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету этого класса.
С:
1.1
См. также:
  • getDeclaredConstructors()

getField

public Field getField(String name) throws NoSuchFieldException, SecurityException
Возвращает Field объект, отражающий указанное общедоступное поле члена класса или интерфейса, представленного этим Class объектом. Параметр name — String, определяющий простое имя искомого поля.

Поле для отражения определяется алгоритмом, который следует. Пусть C — класс или интерфейс, представленный этим Class объектом:

  1. Если C объявляет общедоступное поле с указанным именем, это и есть поле для отражения.
  2. Если поле не было найдено на шаге 1 выше, этот алгоритм применяется рекурсивно к каждому прямому суперинтерфейсу C. Прямые суперинтерфейсы просматриваются в порядке их объявления.
  3. Если поле не было найдено на шагах 1 и 2 выше, и у C есть суперкласс S, то этот алгоритм вызывается рекурсивно для S. Если у C нет суперкласса, то выбрасывается NoSuchFieldException.

Если этот Class объект представляет тип массива, то этот метод не находит length поле типа массива.

Параметры:
name - имя поля
Возвращает:
Field объект этого класса, указанный name
Исключение:
NoSuchFieldException - если поле с указанным именем не найдено.
NullPointerException - если name является null
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик классов вызывающего класса не совпадает с загрузчиком классов текущего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету этого класса.
См. Спецификацию языка Java:
8.2 Члены класса
8.3 Объявления полей
С:
1.1

Метод

public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Возвращает объект, отражающий указанный публичный метод члена класса или интерфейса, представленного этим объектом. Параметр — строка, определяющая простое имя желаемого метода. Параметр — массив объектов, идентифицирующих формальные типы параметров метода в объявленном порядке. Если — null, он обрабатывается как пустой массив.

Если этот объект представляет тип массива, то этот метод находит любой публичный метод, унаследованный типом массива от кроме метода .

Если этот объект представляет интерфейс, то этот метод не находит ни одного неявно объявленного метода от . Поэтому, если в этом интерфейсе или любом из его суперинтерфейсов явно не объявлены методы, то этот метод не находит ни одного метода.

Этот метод не находит методов с именем или .

В общем случае, отражаемый метод определяется алгоритмом из 4 шагов, который следует. Пусть C — класс или интерфейс, представленный этим объектом:

  1. Объединение методов состоит из:
    1. Объявленных публичных экземпляра и статических методов C, возвращаемых методом и отфильтрованных для включения только публичных методов, которые соответствуют заданным и
    2. Если C — класс, отличный от , то включается результат вызова этого алгоритма рекурсивно на суперклассе C.
    3. Включаются результаты вызова этого алгоритма рекурсивно на всех прямых суперинтерфейсах C, но включаются только методы экземпляра.
  2. Это объединение разбивается на подмножества методов с одинаковым типом возвращаемого значения (выбор методов с шага 1 также гарантирует, что у них одинаковое имя метода и типы параметров).
  3. Внутри каждого такого подмножества выбираются только наиболее специфичные методы. Пусть метод M — метод из набора методов с той же сигнатурой VM (тип возвращаемого значения, имя, типы параметров). M — наиболее специфичный, если нет такого метода N != M из того же набора, такого что N более специфичен, чем M. N более специфичен, чем M, если:
    1. N объявлен классом, а M — интерфейсом; или
    2. N и M объявлены либо классами, либо интерфейсами, и декларирующий тип N такой же или подтип декларирующего типа M (очевидно, если декларирующие типы M и N — один и тот же тип, то M и N — один и тот же метод).
  4. Результат этого алгоритма произвольно выбирается из методов с наиболее специфичным типом возвращаемого значения среди всех выбранных методов с шага 3. Пусть R — тип возвращаемого значения метода M из набора всех выбранных методов с шага 3. M — метод с наиболее специфичным типом возвращаемого значения, если нет такого метода N != M из того же набора, имеющего тип возвращаемого значения S != R, такого что S является подтипом R, как определяется методом .
Примечание API:
В классе может быть более одного метода с совпадающим именем и типами параметров, потому что, хотя язык Java запрещает классу объявлять несколько методов с одинаковой сигнатурой, но различными типами возвращаемого значения, виртуальная машина Java не делает этого. Эта повышенная гибкость в виртуальной машине может быть использована для реализации различных функций языка. Например, ковариативные возвращаемые значения могут быть реализованы с помощью методов моста; метод моста и перекрывающий метод имели бы одинаковую сигнатуру, но разные типы возвращаемого значения. Этот метод возвращает перекрывающий метод, поскольку у него более специфичный тип возвращаемого значения.
Параметры:
name - имя метода
parameterTypes - список параметров
Возвращает:
объект, соответствующий заданному имени метода и параметрам
Исключения:
NoSuchMethodException - если соответствующий метод не найден или если имя равно или .
NullPointerException - если — null
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик классов вызывающего не совпадает или не является предком загрузчика класса и вызов отказывается от доступа к пакету этого класса.
См. Спецификацию языка Java:
8.2 Члены класса
8.4 Объявления методов
С:
1.1

Конструктор

public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Возвращает объект, отражающий указанный публичный конструктор класса, представленного этим объектом. Параметр — массив объектов, идентифицирующих формальные типы параметров конструктора в объявленном порядке. Если этот объект представляет вложенный класс, объявленный в нестатическом контексте, формальные типы параметров включают явное вложенное экземпляр в качестве первого параметра.

Конструктор для отражения — это публичный конструктор класса, представленного этим объектом, формальные типы параметров которого соответствуют тем, которые указаны параметром .

Параметры:
parameterTypes - массив параметров
Возвращает:
объект публичного конструктора, соответствующего заданным параметрам
Исключения:
NoSuchMethodException - если соответствующий конструктор не найден, в том числе когда этот объект представляет интерфейс, примитивный тип, тип массива или void.
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик классов вызывающего не совпадает или не является предком загрузчика класса и вызов отказывается от доступа к пакету этого класса.
С:
1.1
См. также:
  • getDeclaredConstructor(Class<?>[])

getDeclaredClasses

public Class<?>[] getDeclaredClasses() throws SecurityException
Возвращает массив объектов, отражающих все классы и интерфейсы, объявленные как члены класса, представленного этим объектом. Это включает публичные, защищенные, по умолчанию (пакетные) и приватные классы и интерфейсы, объявленные классом, но исключает унаследованные классы и интерфейсы. Этот метод возвращает массив длиной 0, если класс не объявляет никаких классов или интерфейсов в качестве членов, или если этот объект представляет примитивный тип, тип массива или void.
Возвращает:
массив объектов, представляющих все объявленные члены этого класса
Исключения:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются любые из следующих условий:
  • загрузчик классов вызывающего не совпадает с загрузчиком классов этого класса, и вызов отказывается от доступа к объявленным классам в этом классе
  • загрузчик классов вызывающего не совпадает или не является предком загрузчика класса, и вызов отказывается от доступа к пакету этого класса
См. Спецификацию языка Java:
8.5 Объявления типов членов
С:
1.1

getDeclaredFields

public Field[] getDeclaredFields() throws SecurityException
Возвращает массив объектов, отражающих все поля, объявленные классом или интерфейсом, представленным этим объектом. Это включает публичные, защищенные, по умолчанию (пакетные) и приватные поля, но исключает унаследованные поля.

Если этот объект представляет класс или интерфейс без объявленных полей, то этот метод возвращает массив длиной 0.

Если этот объект представляет тип массива, примитивный тип или void, то этот метод возвращает массив длиной 0.

Элементы в возвращаемом массиве не отсортированы и не в каком-либо конкретном порядке.

Возвращает:
массив объектов, представляющих все объявленные поля этого класса
Исключения:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются любые из следующих условий:
  • загрузчик классов вызывающего не совпадает с загрузчиком классов этого класса, и вызов отказывается от доступа к объявленным полям в этом классе
  • загрузчик классов вызывающего не совпадает или не является предком загрузчика класса, и вызов отказывается от доступа к пакету этого класса
См. Спецификацию языка Java:
8.2 Члены класса
8.3 Объявления полей
С:
1.1

getRecordComponents

public RecordComponent[] getRecordComponents()
Возвращает массив объектов RecordComponent, представляющих все компоненты записи этого класса записи, или null, если этот класс не является классом записи.

Компоненты возвращаются в том же порядке, в котором они объявлены в заголовке записи. Массив пуст, если у этого класса записи нет компонентов. Если класс не является классом записи, то есть isRecord() возвращает false, то этот метод возвращает null. И наоборот, если isRecord() возвращает true, то этот метод возвращает ненулевое значение.

API Note:

Следующий метод можно использовать для поиска канонического конструктора записи:

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, если этот класс не является классом записи
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются любые из следующих условий:
  • загрузчик класса вызывающего объекта не совпадает с загрузчиком класса и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") запрещает доступ к объявленным методам в этом классе
  • загрузчик класса вызывающего объекта не совпадает и не является предком загрузчика класса для текущего класса, и вызов метода s.checkPackageAccess() запрещает доступ к пакету этого класса
См. Спецификацию языка Java:
8.10 Классы записи
С:
16

getDeclaredMethods

public Method[] getDeclaredMethods() throws SecurityException
Возвращает массив, содержащий объекты Method, отражающие все объявленные методы класса или интерфейса, представленного этим объектом Class, включая public, protected, default (пакетный) доступ и private методы, но исключая унаследованные методы. Объявленные методы могут включать методы, не находящиеся в исходном коде класса или интерфейса, включая мосты методов и другие синтетические методы, добавленные компиляторами.

Если этот объект Class представляет класс или интерфейс, у которого несколько объявленных методов с одинаковым именем и типами параметров, но разными типами возвращаемых значений, то возвращаемый массив содержит объект Method для каждого такого метода.

Если этот объект Class представляет класс или интерфейс, у которого есть метод инициализации класса "<clinit>", то возвращаемый массив не содержит соответствующего объекта Method.

Если этот объект Class представляет класс или интерфейс без объявленных методов, то возвращаемый массив имеет длину 0.

Если этот объект Class представляет тип массива, примитивный тип или void, то возвращаемый массив имеет длину 0.

Элементы в возвращаемом массиве не отсортированы и не расположены в определенном порядке.

Возвращает:
массив объектов Method, представляющих все объявленные методы этого класса
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются любые из следующих условий:
  • загрузчик класса вызывающего объекта не совпадает с загрузчиком класса и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") запрещает доступ к объявленным методам в этом классе
  • загрузчик класса вызывающего объекта не совпадает и не является предком загрузчика класса для текущего класса, и вызов метода s.checkPackageAccess() запрещает доступ к пакету этого класса
См. Спецификацию языка Java:
8.2 Члены класса
8.4 Объявления методов
С:
1.1
См. также:
  • Моделирование языка программирования Java и JVM в ядре отражения

getDeclaredConstructors

public Constructor<?>[] getDeclaredConstructors() throws SecurityException
Возвращает массив объектов Constructor, отражающих все конструкторы, явно или неявно объявленные классом, представленным этим объектом Class. Это конструкторы public, protected, default (пакетного) доступа и private. Элементы в возвращаемом массиве не отсортированы и не расположены в определенном порядке. Если у класса есть конструктор по умолчанию (JLS 8.8.9), он включен в возвращаемый массив. Если у класса-записи есть канонический конструктор (JLS 8.10.4.1, 8.10.4.2), он включен в возвращаемый массив. Этот метод возвращает массив длиной 0, если этот объект Class представляет интерфейс, примитивный тип, класс массива или void.
Возвращает:
массив объектов Constructor, представляющих все объявленные конструкторы этого класса
Исключение:
SecurityException - Если присутствует менеджер безопасности, s, и выполняются любые из следующих условий:
  • загрузчик класса вызывающего объекта не совпадает с загрузчиком класса и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") запрещает доступ к объявленным конструкторам в этом классе
  • загрузчик класса вызывающего объекта не совпадает и не является предком загрузчика класса для текущего класса, и вызов метода s.checkPackageAccess() запрещает доступ к пакету этого класса
См. Спецификацию языка Java:
8.8 Объявления конструкторов
С:
1.1
См. также:
  • getConstructors()

getDeclaredField

public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException
Возвращает объект Field, который отражает указанное объявленное поле класса или интерфейса, представленного этим объектом Class. Параметр name - это строка, которая указывает простое имя нужного поля.

Если этот объект Class представляет тип массива, то этот метод не находит поле length типа массива.

Параметры:
name - имя поля
Возвращает:
объект Field для указанного поля в этом классе
Исключение:
NoSuchFieldException - если поле с указанным именем не найдено.
NullPointerException - если name является null
SecurityException - Если присутствует менеджер безопасности, s, и выполняются любые из следующих условий:
  • загрузчик класса вызывающего объекта не совпадает с загрузчиком класса и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") запрещает доступ к объявленному полю
  • загрузчик класса вызывающего объекта не совпадает и не является предком загрузчика класса для текущего класса, и вызов метода s.checkPackageAccess() запрещает доступ к пакету этого класса
См. Спецификацию языка Java:
8.2 Члены класса
8.3 Объявления полей
С:
1.1

getDeclaredMethod

public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Возвращает объект, отражающий указанный объявленный метод класса или интерфейса, представленного этим объектом. Параметр — это строка, определяющая простое имя искомого метода, а параметр — массив объектов, идентифицирующих формальные типы параметров метода в объявленном порядке. Если в классе объявлено более одного метода с одинаковыми типами параметров, и один из этих методов имеет тип возвращаемого значения, более конкретный, чем любой другой, возвращается этот метод; в противном случае выбирается один из методов произвольно. Если имя равно "<init>" или "<clinit>", возникает исключение.

Если этот объект представляет тип массива, этот метод не находит метод.

Parameters:
name — имя метода
parameterTypes — массив параметров
Returns:
объект для метода этого класса, соответствующего указанному имени и параметрам
Throws:
NoSuchMethodException — если соответствующий метод не найден.
NullPointerException — если name является null
SecurityException — если присутствует менеджер безопасности s и выполняется любое из следующих условий:
  • загрузчик класса вызывающего метода не совпадает с загрузчиком класса и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") отклоняет доступ к объявленному методу
  • загрузчик класса вызывающего метода не совпадает с загрузчиком текущего класса или не является его предком, и вызов метода s.checkPackageAccess() отклоняет доступ к пакету этого класса
See Java Language Specification:
8.2 Class Members
8.4 Method Declarations
Since:
1.1

getDeclaredConstructor

public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Возвращает объект, отражающий указанный конструктор класса, представленного этим объектом. Параметр — массив объектов, идентифицирующих формальные типы параметров конструктора в объявленном порядке. Если этот объект представляет внутренний класс, объявленный в нестатическом контексте, формальные типы параметров включают явный окружающий экземпляр в качестве первого параметра.
Parameters:
parameterTypes — массив параметров
Returns:
Объект для конструктора с указанным списком параметров
Throws:
NoSuchMethodException — если соответствующий конструктор не найден, включая случаи, когда этот объект представляет интерфейс, примитивный тип, класс массива или void.
SecurityException — Если присутствует менеджер безопасности s и выполняется любое из следующих условий:
  • загрузчик класса вызывающего метода не совпадает с загрузчиком класса и вызов метода s.checkPermission с RuntimePermission("accessDeclaredMembers") отклоняет доступ к объявленному конструктору
  • загрузчик класса вызывающего метода не совпадает с загрузчиком текущего класса или не является его предком, и вызов метода s.checkPackageAccess() отклоняет доступ к пакету этого класса
Since:
1.1
See Also:
  • getConstructor(Class<?>[])

getResourceAsStream

public InputStream getResourceAsStream(String name)
Ищет ресурс с заданным именем.

Если этот класс находится в именованном Module, этот метод попытается найти ресурс в модуле. Это делается путём делегирования к загрузчику классов модуля методу findResource(String,String), вызывая его с именем модуля и абсолютным именем ресурса. Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module getResourceAsStream методе, и поэтому этот метод возвращает null, когда ресурс является не-".class" ресурсом в пакете, который не открыт для модуля вызывающего метода.

В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с данным классом, реализуются определяющим загрузчиком классов класса. Этот метод делегирует загрузчику классов этого объекта. Если этот объект был загружен загрузчиком Bootstrap, метод делегирует методу ClassLoader.getSystemResourceAsStream(java.lang.String).

Перед делегированием абсолютное имя ресурса строится из заданного имени ресурса по следующему алгоритму:

  • Если name начинается с '/' ('\u002f'), абсолютное имя ресурса — это часть name, следующая за '/'.
  • В противном случае абсолютное имя имеет следующий вид:
    modified_package_name/name

    Где modified_package_name — имя пакета этого объекта с '/', заменённым на '.' ('\u002e').

Parameters:
name — имя искомого ресурса
Returns:
Объект InputStream; null, если ресурс с этим именем не найден, ресурс находится в пакете, который не открыт хотя бы для вызывающего модуля, или доступ к ресурсу запрещён менеджером безопасности.
Throws:
NullPointerException — если name является null
Since:
1.1
See Also:
  • Module.getResourceAsStream(String)

getResource

public URL getResource(String name)
Ищет ресурс с заданным именем.

Если этот класс находится в именованном Module, этот метод попытается найти ресурс в модуле. Это делается путём делегирования к загрузчику классов модуля методу findResource(String,String), вызывая его с именем модуля и абсолютным именем ресурса. Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module getResourceAsStream методе, и поэтому этот метод возвращает null, когда ресурс является не-".class" ресурсом в пакете, который не открыт для модуля вызывающего метода.

В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с данным классом, реализуются определяющим загрузчиком классов класса. Этот метод делегирует загрузчику классов этого объекта. Если этот объект был загружен загрузчиком Bootstrap, метод делегирует методу ClassLoader.getSystemResource(java.lang.String).

Перед делегированием абсолютное имя ресурса строится из заданного имени ресурса по следующему алгоритму:

  • Если name начинается с '/' ('\u002f'), абсолютное имя ресурса — это часть name, следующая за '/'.
  • В противном случае абсолютное имя имеет следующий вид:
    modified_package_name/name

    Где modified_package_name — имя пакета этого объекта с '/', заменённым на '.' ('\u002e').

Parameters:
name — имя искомого ресурса
Returns:
Объект URL; null, если ресурс с этим именем не найден, ресурс не может быть определён как URL, ресурс находится в пакете, который не открыт хотя бы для вызывающего модуля, или доступ к ресурсу запрещён менеджером безопасности.
Throws:
NullPointerException — если name является null
Since:
1.1

getProtectionDomain

public ProtectionDomain getProtectionDomain()
Возвращает область защиты этого класса. Если установлен менеджер безопасности, этот метод сначала вызывает метод менеджера безопасности checkPermission с разрешением RuntimePermission("getProtectionDomain"), чтобы убедиться, что получение области защиты разрешено.
Returns:
область защиты этого класса
Throws:
SecurityException — если менеджер безопасности существует и его метод checkPermission не позволяет получить область защиты.
Since:
1.2
See Also:
  • ProtectionDomain
  • SecurityManager.checkPermission(java.security.Permission)
  • RuntimePermission

desiredAssertionStatus

public boolean desiredAssertionStatus()
Возвращает состояние проверки, которое было бы присвоено этому классу, если бы он был инициализирован в момент вызова этого метода. Если состояние проверки этого класса было установлено, будет возвращено последнее установленное значение; в противном случае, если для этого класса применимо какое-либо состояние проверки по умолчанию пакета, возвращается последнее значение для самого специфичного соответствующего состояния проверки по умолчанию пакета; в противном случае, если этот класс не является системным классом (т.е. имеет загрузчик классов), возвращается состояние проверки по умолчанию его загрузчика классов; в противном случае возвращается состояние проверки по умолчанию системного класса.
API Note:
Немногим программистам потребуется этот метод; он предоставляется для удобства самого JDK. (Он позволяет классу определить в момент инициализации, нужно ли включать проверки.) Обратите внимание, что этот метод не гарантирует возвращение фактического состояния проверки, которое было (или будет) связано с указанным классом при его (или будущем) инициализации.
Возвращает:
желаемое состояние проверки указанного класса.
С:
1.4
См. также:
  • ClassLoader.setClassAssertionStatus(java.lang.String, boolean)
  • ClassLoader.setPackageAssertionStatus(java.lang.String, boolean)
  • ClassLoader.setDefaultAssertionStatus(boolean)

isEnum

public boolean isEnum()
Возвращает true, если и только если этот класс был объявлен как перечисление в исходном коде. Обратите внимание, что Enum сам по себе не является классом перечисления. Также обратите внимание, что если константа перечисления объявляется с телом класса, класс этого объекта константы перечисления является анонимным классом и не классом объявляющего класса перечисления. Метод Enum.getDeclaringClass() константы перечисления можно использовать для получения класса объявляющего класс перечисления.
Возвращает:
true, если и только если этот класс был объявлен как перечисление в исходном коде
См. Спецификацию языка Java:
8.9.1 Константы перечисления
С:
1.5

isRecord

public boolean isRecord()
Возвращает true, если и только если этот класс является классом записи.

Прямым суперклассом класса записи является java.lang.Record. Класс записи является final. Класс записи имеет (возможно, ноль) компонентов записи; getRecordComponents() возвращает ненулевое, но возможно пустое значение для записи.

Обратите внимание, что класс Record не является классом записи, и поэтому вызов этого метода для класса Record возвращает false.

Возвращает:
true, если и только если этот класс является классом записи, в противном случае false
См. Спецификацию языка Java:
8.10 Классы записей
С:
16

getEnumConstants

public T[] getEnumConstants()
Возвращает элементы этого класса перечисления или null, если этот объект Class не представляет класс перечисления.
Возвращает:
массив, содержащий значения, составляющие класс перечисления, представленный этим объектом 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)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация имеется, в противном случае null.

Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления.

Определено в:
getAnnotation в интерфейсе AnnotatedElement
Параметры типа:
A - тип аннотации, для которого требуется запрос и возврат, если она присутствует
Параметры:
annotationClass - объект Class, соответствующий типу аннотации
Возвращает:
аннотация этого элемента для указанного типа аннотации, если она присутствует в этом элементе, в противном случае null
Исключение:
NullPointerException - если указанный класс аннотации равен null
С:
1.5

isAnnotationPresent

public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация для указанного типа присутствует на этом элементе, в противном случае false. Этот метод предназначен в первую очередь для удобного доступа к аннотациям-маркерам.

Значение истинности, возвращаемое этим методом, эквивалентно: getAnnotation(annotationClass) != null

Определено в:
isAnnotationPresent в интерфейсе AnnotatedElement
Параметры:
annotationClass - объект Class, соответствующий типу аннотации
Возвращает:
true, если аннотация для указанного типа аннотации присутствует в этом элементе, в противном случае false
Исключение:
NullPointerException - если указанный класс аннотации равен null
С:
1.5

getAnnotationsByType

public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
Возвращает аннотации, связанные с этим элементом. Если аннотаций связанных с этим элементом нет, возвращаемое значение - массив длины 0. Разница между этим методом и AnnotatedElement.getAnnotation(Class) заключается в том, что этот метод обнаруживает, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и если да, то пытается найти одну или несколько аннотаций этого типа, «посмотрев» через контейнерную аннотацию. Вызывающий метод может свободно изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Определено в:
getAnnotationsByType в интерфейсе AnnotatedElement
Параметры типа:
A - тип аннотации, для которого требуется запрос и возврат, если она присутствует
Параметры:
annotationClass - объект Class, соответствующий типу аннотации
Возвращает:
все аннотации этого элемента для указанного типа аннотации, если они связаны с этим элементом, в противном случае массив длины ноль
Исключение:
NullPointerException - если указанный класс аннотации равен null
С:
1.8

getAnnotations

public Annotation[] getAnnotations()
Возвращает аннотации, присутствующие на этом элементе. Если аннотаций присутствующих на этом элементе нет, возвращаемое значение - массив длины 0. Вызывающий метод может свободно изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Определено в:
getAnnotations в интерфейсе AnnotatedElement
Возвращает:
аннотации, присутствующие на этом элементе
С:
1.5

getDeclaredAnnotation

public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно присутствует, в противном случае null. Этот метод игнорирует унаследованные аннотации. (Возвращает null, если на этом элементе непосредственно нет аннотаций.)

Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления.

Определено в:
getDeclaredAnnotation в интерфейсе AnnotatedElement
Параметры типа:
A - тип аннотации, для которого требуется запрос и возврат, если она непосредственно присутствует
Параметры:
annotationClass - объект Class, соответствующий типу аннотации
Возвращает:
аннотация этого элемента для указанного типа аннотации, если она непосредственно присутствует в этом элементе, в противном случае null
Исключение:
NullPointerException - если указанный класс аннотации равен null
С:
1.8

getDeclaredAnnotationsByType

public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
Возвращает аннотацию(и) данного элемента для указанного типа, если такие аннотации присутствуют либо непосредственно, либо косвенно. Данный метод игнорирует унаследованные аннотации. Если указанных аннотаций нет ни прямо, ни косвенно, возвращаемое значение – массив длиной 0. Различие между этим методом и AnnotatedElement.getDeclaredAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяющимся типом аннотации (JLS 9.6), и если да, то пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию, если она присутствует. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Specified by:
getDeclaredAnnotationsByType in interface AnnotatedElement
Type Parameters:
A - тип аннотации, для которой нужно выполнить запрос и вернуть, если она присутствует непосредственно или косвенно
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
все аннотации этого элемента для указанного типа аннотации, если они присутствуют прямо или косвенно в этом элементе, в противном случае массив длиной ноль
Throws:
NullPointerException - если данный класс аннотации имеет значение null
Since:
1.8

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. Этот метод игнорирует унаследованные аннотации. Если на этом элементе нет аннотаций непосредственно, возвращаемое значение – массив длиной 0. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Specified by:
getDeclaredAnnotations in interface AnnotatedElement
Returns:
аннотации, непосредственно присутствующие на этом элементе
Since:
1.5

getAnnotatedSuperclass

public AnnotatedType getAnnotatedSuperclass()
Возвращает объект AnnotatedType, представляющий использование типа для указания суперкласса сущности, представленной этим объектом Class. (Использование типа Foo для указания суперкласса в '... extends Foo' отличается от объявления класса Foo.)

Если этот объект Class представляет класс, чье объявление не указывает явно аннотированный суперкласс, то возвращаемое значение – объект AnnotatedType, представляющий элемент без аннотаций.

Если этот объект Class представляет либо класс Object, тип интерфейса, тип массива, примитивный тип или void, то возвращаемое значение – null.

Returns:
объект, представляющий суперкласс
Since:
1.8

getAnnotatedInterfaces

public AnnotatedType[] getAnnotatedInterfaces()
Возвращает массив объектов AnnotatedType, которые представляют использование типов для указания суперинтерфейсов сущности, представленной этим объектом Class. (Использование типа Foo для указания суперинтерфейса в '... implements Foo' отличается от объявления интерфейса Foo.)

Если этот объект Class представляет класс, возвращаемое значение – массив, содержащий объекты, представляющие использование типов интерфейсов для указания реализуемых интерфейсов класса. Порядок объектов в массиве соответствует порядку типов интерфейсов, используемых в ключе 'implements' объявления этого объекта Class.

Если этот объект Class представляет интерфейс, возвращаемое значение – массив, содержащий объекты, представляющие использование типов интерфейсов для указания интерфейсов, прямо расширяемых этим интерфейсом. Порядок объектов в массиве соответствует порядку типов интерфейсов, используемых в ключе 'extends' объявления этого объекта Class.

Если этот объект Class представляет класс или интерфейс, чье объявление не указывает явно никаких аннотированных суперинтерфейсов, возвращаемое значение – массив длиной 0.

Если этот объект Class представляет либо класс Object, тип массива, примитивный тип или void, возвращаемое значение – массив длиной 0.

Returns:
массив, представляющий суперинтерфейсы
Since:
1.8

getNestHost

public Class<?> getNestHost()
Возвращает хост вложенности гнезда, к которому принадлежит класс или интерфейс, представленный этим объектом Class. Каждый класс и интерфейс принадлежит ровно одному гнезду. Если хост вложенности этого класса или интерфейса был ранее определен, то этот метод возвращает хост вложенности. Если хост вложенности этого класса или интерфейса не был ранее определен, то этот метод определяет хост вложенности, используя алгоритм JVMS 5.4.4, и возвращает его. Часто класс или интерфейс принадлежит гнезду, состоящему только из него самого, в этом случае этот метод возвращает this, чтобы указать, что класс или интерфейс является хостом гнезда.

Если этот объект Class представляет примитивный тип, тип массива или void, то этот метод возвращает this, указывая, что представленная сущность принадлежит гнезду, состоящему только из себя, и является хостом гнезда.

Returns:
хост вложенности этого класса или интерфейса
Throws:
SecurityException - Если возвращаемый класс не является текущим классом, и если присутствует менеджер безопасности, s, а загрузчик классов вызывающего метода не совпадает с загрузчиком классов возвращаемого класса или не является его предком, и вызов s.checkPackageAccess() отклоняет доступ к пакету возвращаемого класса
См. Спецификацию виртуальной машины Java:
4.7.28 Атрибут NestHost
4.7.29 Атрибут NestMembers
5.4.4 Управление доступом
Since:
11

isNestmateOf

public boolean isNestmateOf(Class<?> c)
Определяет, является ли данный класс или интерфейс Class соседа по гнезду класса или интерфейса, представленного этим объектом Class. Два класса или интерфейса являются соседями по гнезду, если у них одинаковый хост вложенности.
Parameters:
c - класс для проверки
Returns:
true, если этот класс и c являются членами одного гнезда; и false в противном случае.
Since:
11

getNestMembers

public Class<?>[] getNestMembers()
Возвращает массив, содержащий объекты Class, представляющие все классы и интерфейсы, которые являются членами гнезда, к которому принадлежит класс или интерфейс, представленный этим объектом Class. Сначала этот метод получает хост вложенности, H, гнезда, к которому принадлежит класс или интерфейс, представленный этим объектом Class. Нулевой элемент возвращаемого массива – H. Затем, для каждого класса или интерфейса C, который записывается в H как член своего гнезда, этот метод пытается получить объект Class для C (используя загрузчик определяющего класса текущего объекта Class), а затем получает хост вложенности гнезда, к которому принадлежит C. Классы и интерфейсы, которые записываются в H как члены его гнезда, и для которых H может быть определен как их хост вложенности, обозначаются последующими элементами возвращаемого массива. Порядок таких элементов не определён. Повторы допускаются.

Если этот объект Class представляет примитивный тип, тип массива или void, то этот метод возвращает массив с одним элементом, содержащим this.

API Note:
Возвращаемый массив включает только члены гнезда, записанные в атрибуте NestMembers, и не включает скрытые классы, которые были добавлены в гнездо с помощью Lookup::defineHiddenClass.
Returns:
массив всех классов и интерфейсов в одном гнезде с этим классом или интерфейсом
Throws:
SecurityException - Если любой возвращаемый класс не является текущим классом, и если присутствует менеджер безопасности, s, а загрузчик классов вызывающего метода не совпадает с загрузчиком классов возвращаемого класса или не является его предком, и вызов s.checkPackageAccess() отклоняет доступ к пакету возвращаемого класса
См. Спецификацию виртуальной машины Java:
4.7.28 Атрибут NestHost
4.7.29 Атрибут NestMembers
Since:
11
See Also:
  • getNestHost()

descriptorString

public String descriptorString()
Возвращает строку описателя сущности (класс, интерфейс, класс массива, примитивный тип или void), представленную этим объектом Class.

Если этот объект Class представляет класс или интерфейс, а не класс массива, то:

  • Если класс или интерфейс не скрыт, то результатом является описатель поля (JVMS 4.3.2) для класса или интерфейса. Вызов ClassDesc::ofDescriptor со строкой описателя результата создаёт объект ClassDesc, описывающий этот класс или интерфейс.
  • Если класс или интерфейс скрыт, то результатом является строка вида:
    "L" + N + "." + <suffix> + ";"
    , где N — бинарное имя, закодированное во внутреннем формате, указанном в файле 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
См. также:
  • MethodHandles.Lookup.defineHiddenClass(byte[], boolean, java.lang.invoke.MethodHandles.Lookup.ClassOption...)

getPermittedSubclasses

public Class<?>[] getPermittedSubclasses()
Возвращает массив, содержащий объекты Class, представляющие прямые подинтерфейсы или подклассы, разрешённые для расширения или реализации этого класса или интерфейса, если он является запечатанным. Порядок таких элементов не определён. Массив пуст, если у этого запечатанного класса или интерфейса нет разрешённых подклассов. Если этот объект Class представляет примитивный тип, void, тип массива или класс или интерфейс, который не является запечатанным, то есть isSealed() возвращает false, то этот метод возвращает null. И наоборот, если isSealed() возвращает true, то этот метод возвращает ненулевое значение. Для каждого класса или интерфейса C, который зарегистрирован как разрешённый прямой подинтерфейс или подкласс этого класса или интерфейса, этот метод пытается получить объект Class для C (используя определяющий загрузчик классов текущего объекта Class). Объекты Class, которые могут быть получены и которые являются прямыми подинтерфейсами или подклассами этого класса или интерфейса, указываются элементами возвращаемого массива. Если объект Class получить не удаётся, это игнорируется, и он не включается в результирующий массив.
Возвращает:
массив объектов Class, представляющих разрешённые подклассы этого класса или интерфейса, или null, если этот класс или интерфейс не запечатан.
Бросает:
SecurityException — если присутствует менеджер безопасности, s, и загрузчик классов вызывающего класса не совпадает с загрузчиком классов для возвращаемого класса и вызов s.checkPackageAccess() отклоняет доступ к пакету любого класса в возвращаемом массиве.
См. Спецификацию языка 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, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API