Spec-Zone.ru › OpenJDK 24

Конструктор класса<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

accessFlags, 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 для этого отражённого объекта на указанное значение boolean. Значение true указывает, что отражённый объект должен подавлять проверки управления доступом языка Java, когда он используется. Значение false указывает, что отражённый объект должен обеспечивать проверки управления доступом языка Java при использовании, с изменениями, отмеченными в описании класса.

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

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

Этот метод может использоваться JNI-кодом без вызывающего класса в стеке для включения доступа к member declaring class D, если и только если:

  • Член является public, и D является public в пакете, который модуль, содержащий D, exports безусловно.

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

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

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

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

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

Overrides:
setAccessible в классе AccessibleObject
Параметры:
flag - новое значение для флага accessible
Исключения:
InaccessibleObjectException - если доступ нельзя включить
SecurityException - если это конструктор для java.lang.Class
Внешние спецификации
  • Спецификация Java Native Interface
См. также:
  • 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 Модификаторы конструкторов
См. также:
  • Executable.accessFlags()

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()
Возвращает количество формальных параметров (явно, неявно объявленных или ни тех, ни других) для исполняемого элемента, представленного этим объектом.
Определено в:
getParameterCount в классе Executable
Возвращает:
Количество формальных параметров для исполняемого элемента, который представляет этот объект
С тех пор:
1.8

getGenericParameterTypes

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

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

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

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

getExceptionTypes

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

getGenericExceptionTypes

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

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

Overrides:
getGenericExceptionTypes в классе Executable
Returns:
массив Types, представляющих типы исключений, выбрасываемые подлежащим исполнением
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 в интерфейсе AnnotatedElement
Overrides:
getAnnotation в классе Executable
Type Parameters:
T - тип аннотации, для которого выполняется запрос и которая возвращается, если присутствует
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
аннотация этого элемента для указанного типа аннотации, если она присутствует в этом элементе, в противном случае null
Throws:
NullPointerException - если указанный класс аннотации равен null
Since:
1.5

getDeclaredAnnotations

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

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

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

getParameterAnnotations

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

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

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

getAnnotatedReturnType

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

getAnnotatedReceiverType

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

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/reflect/Constructor.html

Spec-Zone.ru

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