Spec-Zone.ru › OpenJDK 17

Класс Class<T>

java.lang.Object
java.lang.Class<T>
Type Parameters:
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.
См. Спецификацию языка 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>>

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

Модификатор и тип Метод Описание
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()
Возвращает Type , представляющие интерфейсы, которые непосредственно реализует класс или интерфейс, представленный этим объектом 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()
Возвращает родительский элемент вложенности (вложенности) , к которому принадлежит класс или интерфейс, представленный этим объектом Class.
Class<?>[] getNestMembers()
Возвращает массив, содержащий объекты Class, представляющие все классы и интерфейсы, которые являются членами вложенности, к которой принадлежит класс или интерфейс, представленный этим объектом 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 родителем вложенности класса или интерфейса, представленного этим объектом Class.
boolean isPrimitive()
Определяет, представляет ли указанный объект Class примитивный тип.
boolean isRecord()
Возвращает true, если и только если этот класс является классом записей.
boolean isSealed()
Возвращает true, если и только если этот объект Class представляет собой герметичный класс или интерфейс.
boolean isSynthetic()
Возвращает 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.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого Class объекта.

toGenericString

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

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

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

forName

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

Например, следующий фрагмент кода возвращает описание времени выполнения Class для класса с именем java.lang.Thread:

Class t = Class.forName("java.lang.Thread")

Вызов forName("X") приводит к инициализации класса с именем X.

Параметры:
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 объект, связанный с классом или интерфейсом с заданным именем строки, используя заданный класс-загрузчик. Учитывая полное квалифицированное имя класса или интерфейса (в том же формате, что и возвращаемый getName), этот метод пытается найти и загрузить класс или интерфейс. Указанный класс-загрузчик используется для загрузки класса или интерфейса. Если параметр loader равен null, класс загружается через загрузчик Bootstrap. Класс инициализируется только если параметр initialize равен true и если он еще не был инициализирован ранее.

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

Если name обозначает класс массива, тип элемента класса массива загружается, но не инициализируется.

Например, в методе экземпляра выражение:

Class.forName("Foo")
эквивалентно:
Class.forName("Foo", true, this.getClass().getClassLoader())
Обратите внимание, что этот метод выбрасывает ошибки, связанные с загрузкой, связыванием или инициализацией, как указано в разделах 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 Инициализация классов и интерфейсов
С момента:
1.2
См. также:
  • forName(String)
  • ClassLoader

forName

public static Class<?> forName(Module module, String name)
Возвращает Class с заданным бинарным именем в заданном модуле.

Этот метод пытается найти и загрузить класс или интерфейс. Он не связывает класс и не запускает инициализатор класса. Если класс не найден, этот метод возвращает null.

Если класс-загрузчик данного модуля определяет другие модули, и данное имя — это класс, определённый в другом модуле, этот метод возвращает null после загрузки класса.

Этот метод не проверяет, доступен ли запрашиваемый класс вызывающему.

Примечание API:
Этот метод возвращает 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.

Доступ к этим объектам возможен только через следующие публичные статические 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 тогда и только тогда, когда у этого класса установлен бит модификатора synthetic.
Возвращает:
true тогда и только тогда, когда у этого класса установлен бит модификатора synthetic
См. Спецификацию языка Java:
13.1 Формат бинарного файла
См. Спецификацию виртуальной машины Java:
4.1 Структура ClassFile
С момента:
1.5
См. также:
  • Моделирование языка программирования Java и JVM в ядре рефлексии
END_OF_DOCUMENT_MARKER

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"
 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"
 
Возвращает:
имя класса, интерфейса или другой сущности, представленной этим 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()
Возвращает модуль, к которому принадлежит этот класс или интерфейс. Если этот класс представляет тип массива, метод возвращает модуль для типа элемента. Если этот класс представляет примитивный тип или void, возвращается объект модуля java.base . Если класс находится в безымянном модуле, возвращается безымянный Module загрузчика класса для этого класса.
Возвращает:
модуль, к которому принадлежит этот класс или интерфейс
Since:
9

getTypeParameters

public TypeVariable<Class<T>>[] getTypeParameters()
Возвращает массив TypeVariable объектов, представляющих переменные типа, объявленные обобщённым объявлением, представленным этим GenericDeclaration объектом, в порядке объявления. Возвращает массив длины 0, если базовое обобщённое объявление не объявляет переменных типа.
Specified by:
getTypeParameters в интерфейсе GenericDeclaration
Возвращает:
массив TypeVariable объектов, представляющих переменные типа, объявленные этим обобщённым объявлением
Бросает:
GenericSignatureFormatError - если обобщённая сигнатура этого обобщённого объявления не соответствует формату, указанному в разделе 4.7.9 спецификации виртуальной машины Java
Since:
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 - если обобщённый суперкласс ссылается на параметризованный тип, который не может быть инстанцирован по какой-либо причине
Since:
1.5

getPackage

public Package getPackage()
Получает пакет этого класса.

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

Возвращает:
пакет этого класса.

getPackageName

public String getPackageName()
Возвращает полное квалифицированное имя пакета.

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

Если этот класс является вложенным классом, этот метод эквивалентен вызову getPackageName() для внешнего класса.

Если этот класс является локальным классом или анонимным классом, этот метод эквивалентен вызову getPackageName() для объявляющего класса внешнего метода или внешнего конструктора.

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

Возвращает:
полное квалифицированное имя пакета
См. Спецификацию языка Java:
6.7 Полные квалифицированные имена
Since:
9

getInterfaces

public Class<?>[] getInterfaces()
Возвращает интерфейсы, непосредственно реализуемые классом или интерфейсом, представленным этим Class объектом.

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

class Shimmer implements FloorWax, DessertTopping { ... }
предположим, что значение s является экземпляром Shimmer; значение выражения:
s.getClass().getInterfaces()[0]
является Class объектом, представляющим интерфейс FloorWax; и значение:
s.getClass().getInterfaces()[1]
является Class объектом, представляющим интерфейс DessertTopping.

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

Если этот Class объект представляет класс или интерфейс, не реализующий никаких интерфейсов, метод возвращает массив длины 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 Virtual Machine для public, protected, private, final, static, abstract и interface; их следует декодировать с помощью методов класса Modifier.

Если базовый класс является классом массива, то его модификаторы public, private и protected совпадают с модификаторами его типа компонента. Если этот Class объект представляет примитивный тип или void, его модификатор public всегда равен true, а его модификаторы protected и private всегда равны false. Если этот Class объект представляет класс массива, примитивный тип или void, то его модификатор final всегда равен true, а модификатор интерфейса всегда равен false. Значения других модификаторов не определяются этой спецификацией.

Кодировка модификаторов определена в разделе 4.1 спецификации Java Virtual Machine.

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

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.
Returns:
класс, объявивший данный класс
Throws:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего метода не совпадает с загрузчиком класса объявляющего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету объявляющего класса
Since:
1.1

getEnclosingClass

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

getSimpleName

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

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

Returns:
простое имя базового класса
Since:
1.5

getTypeName

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

getCanonicalName

public String getCanonicalName()
Возвращает каноническое имя базового класса, определённое в Спецификации языка Java. Возвращает null если базовый класс не имеет канонического имени. К классам без канонических имён относятся:
  • локальный класс
  • анонимный класс
  • скрытый класс
  • массив, тип компонента которого не имеет канонического имени
Returns:
каноническое имя базового класса, если оно существует, и null в противном случае.
Since:
1.5

isAnonymousClass

public boolean isAnonymousClass()
Возвращает true тогда и только тогда, когда базовый класс является анонимным классом.
API Note:
Анонимный класс не является скрытым классом.
Returns:
true тогда и только тогда, когда этот класс является анонимным классом.
See Java Language Specification:
15.9.5 Объявления анонимных классов
Since:
1.5

isLocalClass

public boolean isLocalClass()
Возвращает true тогда и только тогда, когда базовый класс является локальным классом.
Returns:
true тогда и только тогда, когда этот класс является локальным классом.
See Java Language Specification:
14.3 Объявления локальных классов
Since:
1.5

isMemberClass

public boolean isMemberClass()
Возвращает true тогда и только тогда, когда базовый класс является членом класса.
Returns:
true тогда и только тогда, когда этот класс является членом класса.
See Java Language Specification:
8.5 Объявления типов-членов
Since:
1.5

getClasses

public Class<?>[] getClasses()
Возвращает массив, содержащий Class объекты, представляющие все открытые классы и интерфейсы, которые являются членами класса, представленного этим Class объектом. Это включает в себя открытые классы и интерфейсы, унаследованные от суперклассов, и открытые классы и интерфейсы, объявленные классом. Этот метод возвращает массив длиной 0, если у этого Class объекта нет открытых членов-классов или интерфейсов. Этот метод также возвращает массив длиной 0, если этот Class объект представляет примитивный тип, класс массива или void.
Returns:
массив Class объектов, представляющих открытых членов этого класса
Throws:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего метода не совпадает с загрузчиком класса текущего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету этого класса.
Since:
1.1

getFields

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

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

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

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

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

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

Returns:
массив Field объектов, представляющих открытые поля
Throws:
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего метода не совпадает с загрузчиком класса текущего класса или не является его предком, и вызов s.checkPackageAccess() запрещает доступ к пакету этого класса.
See Java Language Specification:
8.2 Члены класса
8.3 Объявления полей
Since:
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

getField

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

Поле, которое будет отражено, определяется алгоритмом, который следует ниже. Пусть 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
Возвращает объект Method, отражающий указанный общедоступный метод-член класса или интерфейса, представленного этим объектом Class. Параметр name является строкой String, указывающей простое имя желаемого метода. Параметр parameterTypes — массив объектов Class, которые идентифицируют формальные типы параметров метода в порядке объявления. Если parameterTypes равен null, он обрабатывается как пустой массив.

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

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

Этот метод не находит ни один метод с именем "<init>" или "Class".

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

  1. Объединение методов состоит из:
    1. Объявленных общедоступных методов экземпляра и статических методов C, возвращаемых getDeclaredMethods() и отфильтрованных для включения только общедоступных методов, соответствующих заданным name и parameterTypes
    2. Если C — класс, отличный от Object, то включается результат вызова этого алгоритма рекурсивно на суперклассе 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, как определено в R.class.isAssignableFrom(java.lang.Class<?>)(S.class).
Примечание API:
В классе может быть более одного метода с совпадающим именем и типами параметров, поскольку, хотя язык Java запрещает классу объявлять несколько методов с той же подписью, но с разными типами возвращаемого значения, виртуальная машина Java этого не делает. Эта повышенная гибкость в виртуальной машине может быть использована для реализации различных языковых функций. Например, ковариативные возвращаемые значения могут быть реализованы с помощью методов-мостов; у метода-моста и переопределяющего метода будет одинаковая подпись, но разные типы возвращаемого значения. Этот метод вернет переопределяющий метод, так как у него будет более специфичный тип возвращаемого значения.
Параметры:
name - имя метода
parameterTypes - список параметров
Возвращает:
объект Method, соответствующий указанному name и parameterTypes
Исключение:
NoSuchMethodException - если соответствующий метод не найден или если имя "<init>" или "<clinit>".
NullPointerException - если name равно null
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего метода не совпадает с загрузчиком класса текущего класса или не является его предком, и вызов s.checkPackageAccess() отказывается предоставить доступ к пакету этого класса.
См. Спецификацию языка Java:
8.2 Члены класса
8.4 Объявления методов
С:
1.1

Конструктор

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

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

Параметры:
parameterTypes - массив параметров
Возвращает:
объект Constructor общедоступного конструктора, соответствующего указанному parameterTypes
Исключение:
NoSuchMethodException - если соответствующий метод не найден.
SecurityException - Если присутствует менеджер безопасности, s, и загрузчик класса вызывающего метода не совпадает с загрузчиком класса текущего класса или не является его предком, и вызов s.checkPackageAccess() отказывается предоставить доступ к пакету этого класса.
С:
1.1

Получить объявленные классы

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

Получить объявленные поля

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

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

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

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

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

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

См. раздел Спецификация языка Java, раздел 8.2.

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

getDeclaredField

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

Если этот объект 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
Возвращает объект Method , отражающий указанный объявленный метод класса или интерфейса, представленного этим объектом Class . Параметр name — это String , который задаёт простое имя требуемого метода, а параметр parameterTypes — это массив объектов Class , которые определяют формальные типы параметров метода в порядке объявления. Если в классе объявлено более одного метода с одинаковыми типами параметров, и один из этих методов имеет тип возвращаемого значения, более специфичный, чем любой другой, возвращается этот метод; в противном случае выбирается один из методов произвольно. Если имя — "<init>" или "<clinit>," генерируется исключение NoSuchMethodException .

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

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

getDeclaredConstructor

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

getResourceAsStream

public InputStream getResourceAsStream(String name)
Поиск ресурса с заданным именем.

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

В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с данным классом, реализуются определяющим загрузчиком классов класса. Этот метод делегирует загрузчику классов этого объекта Class. Если этот объект 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" ресурсом в пакете, который не открыт для модуля вызывающего кода.

В противном случае, если этот класс не находится в именованном модуле, правила поиска ресурсов, связанных с данным классом, реализуются определяющим загрузчиком классов класса. Этот метод делегирует загрузчику классов этого объекта Class. Если этот объект 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. (Он позволяет классу определить в момент инициализации, должны ли быть включены проверки утверждений.) Обратите внимание, что этот метод не гарантирует возвращение фактического состояния проверки утверждений, которое было (или будет) связано с указанным классом в момент (или в момент) его инициализации.
Returns:
Желаемое состояние проверки утверждений для указанного класса.
Since:
1.4
See Also:
  • ClassLoader.setClassAssertionStatus(java.lang.String, boolean)
  • ClassLoader.setPackageAssertionStatus(java.lang.String, boolean)
  • ClassLoader.setDefaultAssertionStatus(boolean)

isEnum

public boolean isEnum()
Возвращает true, если и только если этот класс был объявлен как перечисление в исходном коде. Обратите внимание, что Enum сам по себе не является классом перечисления. Также обратите внимание, что если константа перечисления объявлена с телом класса, класс этого объекта константы перечисления является анонимным классом, а не классом объявляющего класса перечисления. Метод Enum.getDeclaringClass() константы перечисления можно использовать для получения класса класса перечисления, объявляющего константу.
Returns:
true, если и только если этот класс был объявлен как перечисление в исходном коде
See Java Language Specification:
8.9.1 Enum Constants
Since:
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 - объект класса, соответствующий типу аннотации
Возвращает:
аннотацию этого элемента для указанного типа аннотации, если она присутствует на этом элементе, в противном случае null
Исключения:
NullPointerException - если заданный класс аннотации равен null
С тех пор:
1.5

isAnnotationPresent

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

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

Определено в:
isAnnotationPresent в интерфейсе AnnotatedElement
Параметры:
annotationClass - объект класса, соответствующий типу аннотации
Возвращает:
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 - объект класса, соответствующий типу аннотации
Возвращает:
все аннотации этого элемента для указанного типа аннотации, если они связаны с этим элементом, в противном случае массив длиной ноль
Исключения:
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 - объект класса, соответствующий типу аннотации
Возвращает:
аннотация этого элемента для указанного типа аннотации, если она непосредственно присутствует на этом элементе, в противном случае null
Исключения:
NullPointerException - если заданный класс аннотации равен null
С тех пор:
1.8

getDeclaredAnnotationsByType

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

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

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

getDeclaredAnnotations

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

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

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

getAnnotatedSuperclass

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

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

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

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

getAnnotatedInterfaces

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

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

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

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

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

Возвращает:
массив, представляющий суперинтерфейсы
С:
1.8

getNestHost

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

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

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

isNestmateOf

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

getNestMembers

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

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

Примечание API:
Возвращаемый массив включает только членов гнезда, записанных в атрибуте NestMembers, а не любые скрытые классы, которые были добавлены в гнездо с помощью Lookup::defineHiddenClass.
Возвращает:
массив всех классов и интерфейсов в том же гнезде, что и этот класс или интерфейс
Исключения:
SecurityException - Если какой-либо возвращаемый класс не является текущим классом, и если менеджер безопасности, s, присутствует, и загрузчик класса вызывающего не тот же, что и загрузчик класса возвращаемого класса, или является его предком, и вызов s.checkPackageAccess() отказывается в доступе к пакету возвращаемого класса
См. Спецификацию виртуальной машины Java:
4.7.28 Атрибут NestHost
4.7.29 Атрибут NestMembers
С:
11
См. также:
  • 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
Примечание API:
Это не строго обратное преобразование forName(java.lang.String); различные классы, имеющие общее имя, но разные загрузчики классов, будут иметь идентичные строки описания.
Возвращает:
строку описания для этого 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, описывающий тип массива
С:
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, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html

Spec-Zone.ru

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