Spec-Zone.ru › OpenJDK 17

Конструктор класса<T>

java.lang.Object
java.lang.reflect.AccessibleObject
java.lang.reflect.Executable
java.lang.reflect.Constructor<T>
Параметры типа:
T - класс, в котором объявлен конструктор
Все реализованные интерфейсы:
AnnotatedElement, GenericDeclaration, Member
public final class Constructor<T> extends Executable
Constructor предоставляет информацию о и доступ к одному конструктору класса.

Constructor допускает расширяющие преобразования при сопоставлении фактических параметров newInstance() с формальными параметрами базового конструктора, но генерирует IllegalArgumentException если произойдет сужающее преобразование.

С тех пор:
1.1
См. также:
  • Member
  • Class
  • Class.getConstructors()
  • Class.getConstructor(Class[])
  • Class.getDeclaredConstructors()

Краткое описание полей

Поля, объявленные в интерфейсе java.lang.reflect.Member

DECLARED, PUBLIC

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

Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает этот Constructor с указанным объектом.
AnnotatedType getAnnotatedReceiverType()
Возвращает объект AnnotatedType, который представляет использование типа для указания типа получателя метода/конструктора, представленного этим объектом Executable.
AnnotatedType getAnnotatedReturnType()
Возвращает объект AnnotatedType, который представляет использование типа для указания типа возвращаемого значения метода/конструктора, представленного этим объектом Executable.
<T extends Annotation>
T
getAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.
Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно присутствуют на этом элементе.
Class<T> getDeclaringClass()
Возвращает объект Class, представляющий класс, объявляющий конструктор, представленный этим объектом.
Class<?>[] getExceptionTypes()
Возвращает массив объектов Class, которые представляют типы исключений, объявленных как выбрасываемые базовым исполняемым объектом, представленным этим объектом.
Type[] getGenericExceptionTypes()
Возвращает массив объектов Type , которые представляют исключения, объявленные как выбрасываемые этим объектом исполняемого кода.
Type[] getGenericParameterTypes()
Возвращает массив объектов Type , которые представляют формальные типы параметров, в порядке объявления, исполняемого кода, представленного этим объектом.
int getModifiers()
Возвращает модификаторы языка Java для исполняемого кода, представленного этим объектом.
String getName()
Возвращает имя этого конструктора в виде строки.
Annotation[][] getParameterAnnotations()
Возвращает массив массивов Annotation , которые представляют аннотации формальных параметров, в порядке объявления, Executable , представленного этим объектом.
int getParameterCount()
Возвращает количество формальных параметров (явных, неявных или отсутствие таковых) исполняемого кода, представленного этим объектом.
Class<?>[] getParameterTypes()
Возвращает массив объектов Class , которые представляют формальные типы параметров, в порядке объявления, исполняемого кода, представленного этим объектом.
TypeVariable<Constructor<T>>[] getTypeParameters()
Возвращает массив объектов TypeVariable , которые представляют переменные типа, объявленные обобщённым объявлением, представленным этим объектом GenericDeclaration , в порядке объявления.
int hashCode()
Возвращает хэш-код для этого Constructor.
boolean isSynthetic()
Возвращает true если этот исполняемый код является синтетической конструкцией; возвращает false в противном случае.
boolean isVarArgs()
Возвращает true если этот исполняемый код был объявлен для принятия переменного количества аргументов; возвращает false в противном случае.
T newInstance(Object... initargs)
Использует конструктор, представленный этим объектом Constructor , для создания и инициализации нового экземпляра класса, объявляющего конструктор, с указанными параметрами инициализации.
void setAccessible(boolean flag)
Устанавливает флаг accessible для этого отражённого объекта в указанное булево значение.
String toGenericString()
Возвращает строку, описывающую этот Constructor, включая параметры типа.
String toString()
Возвращает строку, описывающую этот Constructor.

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

getAnnotatedExceptionTypes, getAnnotatedParameterTypes, getAnnotationsByType, getParameters

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

canAccess, getAnnotations, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAccessible, isAnnotationPresent, setAccessible, trySetAccessible

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе java.lang.reflect.AnnotatedElement

getAnnotations, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent

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

setAccessible

public void setAccessible(boolean flag)
Устанавливает флаг accessible для этого отражённого объекта на указанное булево значение. Значение true указывает, что отражённый объект должен подавлять проверки управления доступом языка Java при его использовании. Значение false указывает, что отражённый объект должен применять проверки управления доступом языка Java при его использовании, с вариацией, отмеченной в описании класса.

Этот метод может быть использован вызывающим объектом в классе C для разрешения доступа к member объекта declaring class D в следующих случаях:

  • C и D находятся в одном модуле.
  • Член является public, а D находится в пакете, к которому модуль, содержащий D exports экспортирует по меньшей мере в модуль, содержащий C.
  • Член является protected static, D находится в пакете, к которому модуль, содержащий D экспортирует по меньшей мере в модуль, содержащий C, и C является подклассом D.
  • D находится в пакете, к которому модуль, содержащий D opens экспортирует по меньшей мере в модуль, содержащий C. Все пакеты в безымянных и открытых модулях открыты для всех модулей, поэтому этот метод всегда выполняется успешно, когда D находится в безымянном или открытом модуле.

Этот метод не может быть использован для разрешения доступа к приватным членам, членам с доступом по умолчанию (пакетному), защищённым экземплярам или защищённым конструкторам, когда класс объявляющий их находится в другом модуле, чем вызывающий, и пакет, содержащий объявляющий класс, не открыт для модуля вызывающего.

Этот метод не может быть использован для разрешения записи доступа к неизменяемому конечному полю. Следующие поля неизменяемы:

  • статические конечные поля, объявленные в любом классе или интерфейсе
  • конечные поля, объявленные в скрытом классе
  • конечные поля, объявленные в записи

Флаг accessible при true подавляет проверки управления доступом языка Java, чтобы разрешить только чтение доступа к этим неизменяемым конечным полям.

Если есть менеджер безопасности, его метод checkPermission сначала вызывается с разрешением ReflectPermission("suppressAccessChecks").

Исключение SecurityException также возникает, если этот объект является Constructor объектом для класса Class и flag равно true.

Overrides:
setAccessible в классе AccessibleObject
Параметры:
flag - новое значение для флага accessible
Исключения:
InaccessibleObjectException - если доступ не может быть разрешен
SecurityException - если запрос отклонен менеджером безопасности или это конструктор для java.lang.Class
См. также:
  • AccessibleObject.trySetAccessible()
  • MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)

getDeclaringClass

public Class<T> getDeclaringClass()
Возвращает объект Class, представляющий класс, который объявляет конструктор, представленный этим объектом.
Указано в:
getDeclaringClass в интерфейсе Member
Указано в:
getDeclaringClass в классе Executable
Возвращает:
объект, представляющий класс, объявляющий подлежащий член

getName

public String getName()
Возвращает имя этого конструктора в виде строки. Это двоичное имя класса, объявляющего конструктор.
Указано в:
getName в интерфейсе Member
Указано в:
getName в классе Executable
Возвращает:
простое имя подлежащего члена

getModifiers

public int getModifiers()
Возвращает модификаторы языка Java для исполняемого объекта, представленного этим объектом.
Указано в:
getModifiers в интерфейсе Member
Указано в:
getModifiers в классе Executable
Возвращает:
модификаторы языка Java для исполняемого объекта, представленного этим объектом
См. Спецификацию языка Java:
8.8.3 Модификаторы конструкторов
См. также:
  • Modifier

getTypeParameters

public TypeVariable<Constructor<T>>[] getTypeParameters()
Возвращает массив объектов TypeVariable, представляющих тип переменных, объявленных обобщённым объявлением, представленным этим объектом GenericDeclaration , в порядке объявления. Возвращает массив длиной 0, если подлежащее обобщённое объявление не объявляет ни одной переменной типа.
Указано в:
getTypeParameters в интерфейсе GenericDeclaration
Указано в:
getTypeParameters в классе Executable
Возвращает:
массив объектов TypeVariable, представляющих переменные типов, объявленные этим обобщённым объявлением
Исключения:
GenericSignatureFormatError - если обобщённая сигнатура этого обобщённого объявления не соответствует формату, указанному в Спецификации виртуальной машины Java
С тех пор как:
1.5

getParameterTypes

public Class<?>[] getParameterTypes()
Возвращает массив объектов Class, представляющих формальные типы параметров в порядке объявления, исполняемого, представленного этим объектом. Возвращает массив длиной 0, если подлежащее исполняемое не принимает никаких параметров. Обратите внимание, что конструкторы некоторых внутренних классов могут иметь неявно объявленный параметр в дополнение к явно объявленным.
Указано в:
getParameterTypes в классе Executable
Возвращает:
типы параметров для исполняемого объекта, который представляет этот объект

getParameterCount

public int getParameterCount()
Возвращает количество формальных параметров (как явно, так и неявно объявленных) для исполняемого объекта, представленного этим объектом.
Overrides:
getParameterCount в классе Executable
Возвращает:
Количество формальных параметров для исполняемого объекта, который представляет этот объект
С тех пор как:
1.8

getGenericParameterTypes

public Type[] getGenericParameterTypes()
Возвращает массив объектов Type, представляющих формальные типы параметров в порядке объявления, исполняемого, представленного этим объектом. Массив длиной 0 возвращается, если подлежащее исполняемое не принимает никаких параметров. Обратите внимание, что конструкторы некоторых вложенных классов могут иметь неявно объявленный параметр в дополнение к явно объявленным. Также обратите внимание, что, как артефакт моделирования модели языка, количество возвращаемых параметров может отличаться в зависимости от наличия информации о дженериках. Если информация о дженериках есть, будут возвращены только параметры, явно присутствующие в исходном коде; если информация о дженериках отсутствует, могут быть возвращены также неявные и синтетические параметры.

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

Если формальный тип параметра является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.

Overrides:
getGenericParameterTypes в классе Executable
Возвращает:
массив объектов Type, представляющих формальные типы параметров подлежащего исполняемого объекта в порядке объявления
Исключения:
GenericSignatureFormatError - если обобщённая сигнатура метода не соответствует формату, указанному в Спецификации виртуальной машины Java
TypeNotPresentException - если любой из типов параметров подлежащего исполняемого объекта ссылается на не существующее объявление типа
MalformedParameterizedTypeException - если любой из типов параметров подлежащего исполняемого объекта ссылается на параметризованный тип, который не может быть проинициализирован по какой-либо причине
С тех пор как:
1.5

getExceptionTypes

public Class<?>[] getExceptionTypes()
Возвращает массив объектов Class, представляющих типы исключений, объявленные как выбрасываемые подлежащим исполняемым объектом, представленным этим объектом. Возвращает массив длиной 0, если исполняемый объект не объявляет исключения в его throws разделе.
Указано в:
getExceptionTypes в классе Executable
Возвращает:
типы исключений, объявленные как выбрасываемые этим исполняемым объектом

getGenericExceptionTypes

public Type[] getGenericExceptionTypes()
Возвращает массив объектов Type, представляющих исключения, объявленные для выброса этим объектом исполняемого кода. Возвращает массив длиной 0, если подлежащий исполняемый код не объявляет исключений в своём throws разделе.

Если тип исключения является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.

Overrides:
getGenericExceptionTypes в классе Executable
Returns:
массив типов, представляющих типы исключений, выбрасываемых подлежащим исполняемым кодом
Throws:
GenericSignatureFormatError - если подпись обобщённого метода не соответствует формату, указанному в Спецификации виртуальной машины Java
TypeNotPresentException - если раздел throws подлежащего исполняемого кода ссылается на не существующее объявление типа
MalformedParameterizedTypeException - если раздел throws подлежащего исполняемого кода ссылается на параметризованный тип, который не может быть инициализирован по какой-либо причине
Since:
1.5

equals

public boolean equals(Object obj)
Сравнивает этот Constructor с заданным объектом. Возвращает true, если объекты идентичны. Два объекта Constructor идентичны, если они были объявлены одним и тем же классом и имеют одинаковые типы формальных параметров.
Overrides:
equals в классе Object
Parameters:
obj - объект-ссылка для сравнения.
Returns:
true , если этот объект идентичен аргументу obj; false в противном случае.
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хэш-код для этого Constructor. Хэш-код совпадает с хэш-кодом имени декларирующего класса подлежащего конструктора.
Overrides:
hashCode в классе Object
Returns:
значение хэш-кода для этого объекта.
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString()
Возвращает строку, описывающую этот Constructor. Строка форматируется как модификаторы доступа конструктора, если таковые имеются, за которыми следует полное квалифицированное имя декларирующего класса, за которым следует скобочная, разделённая запятыми последовательность типов формальных параметров конструктора. Например:

    public java.util.HashMap(int,float)
 

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

Единственные возможные модификаторы для конструкторов — это модификаторы доступа public, protected или private. Может присутствовать только один из них, или ни одного, если конструктор имеет доступ по умолчанию (пакетный).

Overrides:
toString в классе Object
Returns:
строка, описывающая этот Constructor
See Java Language Specification:
8.8.3 Конструкторные модификаторы
8.9.2 Объявления тела перечисления

toGenericString

public String toGenericString()
Возвращает строку, описывающую этот Constructor, включая параметры типа. Строка форматируется как модификаторы доступа конструктора, если таковые имеются, за которыми следует список параметров типа в угловых скобках, разделённых запятыми, если таковые имеются, включая информативные границы параметров типа, если таковые имеются, за которыми следует полное квалифицированное имя декларирующего класса, за которым следует скобочная, разделённая запятыми последовательность обобщённых формальных параметров конструктора. Если этот конструктор объявлен для работы с переменным числом аргументов, вместо обозначения последнего параметра как "Type[]", используется "Type...". Пробел используется для разделения модификаторов доступа друг от друга и от параметров типа или имени класса. Если параметров типа нет, список параметров типа опускается; если список параметров типа присутствует, список отделяется от имени класса пробелом. Если для конструктора объявлены исключения, список параметров следует за пробелом, за которым следует слово "throws", за которым следует список типов исключений, разделённых запятыми.

Единственные возможные модификаторы для конструкторов — это модификаторы доступа public, protected или private. Может присутствовать только один из них, или ни одного, если конструктор имеет доступ по умолчанию (пакетный).

Specified by:
toGenericString в классе Executable
Returns:
строка, описывающая этот Constructor, включая параметры типа
See Java Language Specification:
8.8.3 Конструкторные модификаторы
8.9.2 Объявления тела перечисления
Since:
1.5

newInstance

public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Использует конструктор, представленный этим объектом Constructor, для создания и инициализации нового экземпляра декларируемого классом конструктора, с указанными параметрами инициализации. Индивидуальные параметры автоматически распаковываются для соответствия примитивным формальным параметрам, и как примитивные, так и ссылочные параметры подлежат преобразованиям вызова метода, если необходимо.

Если число формальных параметров, требуемых подлежащим конструктором, равно 0, предоставленный массив initargs может иметь длину 0 или быть null.

Если декларируемый класс конструктора является внутренним классом в контексте нестатическом, первым аргументом конструктора должен быть внешний экземпляр; см. раздел 15.9.3 Спецификации языка Java.

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

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

Parameters:
initargs - массив объектов, передаваемых в качестве аргументов вызову конструктора; значения примитивных типов упаковываются в оберточный объект соответствующего типа (например, float в Float)
Returns:
новый объект, созданный путём вызова конструктора, представленного этим объектом
Throws:
IllegalAccessException - если этот объект Constructor обеспечивает контроль доступа языка Java, и подлежащий конструктор недоступен.
IllegalArgumentException - если количество фактических и формальных параметров отличается; если преобразование распаковки для примитивных аргументов терпит неудачу; или если после возможной распаковки значение параметра не может быть преобразовано в соответствующий тип формального параметра посредством преобразования вызова метода; если этот конструктор относится к классу перечисления.
InstantiationException - если класс, декларирующий подлежащий конструктор, представляет собой абстрактный класс.
InvocationTargetException - если подлежащий конструктор выбрасывает исключение.
ExceptionInInitializerError - если инициализация, вызванная этим методом, терпит неудачу.

isVarArgs

public boolean isVarArgs()
Возвращает true , если этот исполняемый код был объявлен для работы с переменным числом аргументов; возвращает false в противном случае.
Overrides:
isVarArgs в классе Executable
Returns:
true , если этот исполняемый код был объявлен для работы с переменным числом аргументов; возвращает false в противном случае
See Java Language Specification:
8.4.1 Формальные параметры
Since:
1.5

isSynthetic

public boolean isSynthetic()
Возвращает true , если этот исполняемый код является синтетической конструкцией; возвращает false в противном случае.
Specified by:
isSynthetic в интерфейсе Member
Overrides:
isSynthetic в классе Executable
Returns:
true, если и только если этот исполняемый код является синтетической конструкцией, как определено в Спецификации языка Java.
See Java Language Specification:
13.1 Форма бинарного файла
See Java Virtual Machine Specification:
4.6 Методы
Since:
1.5
See Also:
  • Моделирование языка программирования Java и JVM в основных отражениях

getAnnotation

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

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

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

getDeclaredAnnotations

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

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

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

getParameterAnnotations

public Annotation[][] getParameterAnnotations()
Возвращает массив массивов Annotations, представляющих аннотации формальных параметров, в порядке объявления, Executable , представленного этим объектом. Синтетические и предписанные параметры (см. объяснение ниже), такие как внешний параметр "this" для конструктора внутреннего класса, будут представлены в возвращаемом массиве. Если у исполняемого объекта нет параметров (т. е. нет формальных, синтетических и предписанных параметров), будет возвращен массив нулевой длины. Если у Executable есть один или несколько параметров, для каждого параметра без аннотаций возвращается вложенный массив длиной ноль. Объекты аннотаций, содержащиеся в возвращаемых массивах, сериализуемы. Вызывающий метод свободен изменять возвращаемые массивы; это не повлияет на массивы, возвращаемые другим вызывающим методам. Компилятор может добавить дополнительные параметры, которые неявно объявлены в исходном коде ("предписанные"), а также параметры, которые не являются ни неявно, ни явно объявленными в исходном коде ("синтетические"), в список параметров для метода. См. Parameter для получения дополнительной информации.

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

Specified by:
getParameterAnnotations in class Executable
Returns:
массив массивов, представляющих аннотации формальных и неявных параметров, в порядке объявления, исполняемого объекта, представленного этим объектом
Since:
1.5
See Also:
  • Parameter
  • Parameter.getAnnotations()

getAnnotatedReturnType

public AnnotatedType getAnnotatedReturnType()
Возвращает объект AnnotatedType, представляющий использование типа для указания типа возвращаемого значения метода/конструктора, представленного этим объектом Executable. Если этот объект Executable представляет конструктор, объект AnnotatedType представляет тип создаваемого объекта. Если этот объект Executable представляет метод, объект AnnotatedType представляет использование типа для указания типа возвращаемого значения метода.
Specified by:
getAnnotatedReturnType in class Executable
Returns:
объект, представляющий тип возвращаемого значения метода или конструктора, представленного этим объектом Executable
Since:
1.8

getAnnotatedReceiverType

public AnnotatedType getAnnotatedReceiverType()
Возвращает объект AnnotatedType, представляющий использование типа для указания типа получателя метода/конструктора, представленного этим объектом Executable . Тип получателя метода/конструктора доступен только в том случае, если у метода/конструктора есть параметр получателя (JLS 8.4.1). Если этот объект Executable представляет метод экземпляра или представляет конструктор внутреннего класса-члена, и метод/конструктор либо не имеет параметра получателя, либо имеет параметр получателя без аннотаций на его типе, то возвращаемое значение является объектом AnnotatedType , представляющим элемент без аннотаций. Если этот объект Executable представляет статический метод или представляет конструктор верхнего уровня, статического члена, локального или анонимного класса, то возвращаемое значение равно null.
Overrides:
getAnnotatedReceiverType in class Executable
Returns:
объект, представляющий тип получателя метода или конструктора, представленного этим объектом Executable или null если этот объект Executable не может иметь параметр получателя
Since:
1.8

© 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/reflect/Constructor.html

Spec-Zone.ru

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