Класс Конструктор<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) | Сравнивает этот |
AnnotatedType | getAnnotatedReceiverType() | Возвращает объект |
AnnotatedType | getAnnotatedReturnType() | Возвращает объект |
<T extends Annotation> | getAnnotation(Class<T> annotationClass) | Возвращает аннотацию элемента для указанного типа, если она присутствует, в противном случае null. |
Annotation[] | getDeclaredAnnotations() | Возвращает аннотации, непосредственно присутствующие на этом элементе. |
Class<T> | getDeclaringClass() | Возвращает объект |
Type[] | getGenericExceptionTypes() | Возвращает массив объектов |
Type[] | getGenericParameterTypes() | Возвращает массив объектов |
String | getName() | Возвращает имя этого конструктора в виде строки. |
Annotation[][] | getParameterAnnotations() | Возвращает массив массивов |
int | getParameterCount() | Возвращает количество формальных параметров (явных, неявных или ни тех, ни других) для исполняемого объекта, представленного этим объектом. |
TypeVariable<Constructor<T>>[] | getTypeParameters() | Возвращает массив объектов |
int | hashCode() | Возвращает код хэш для этого |
boolean | isSynthetic() | Возвращает |
boolean | isVarArgs() | Возвращает |
T | newInstance(Object... initargs) | Использует конструктор, представленный этим объектом |
void | setAccessible(boolean flag) | Устанавливает флаг |
String | toGenericString() | Возвращает строку, описывающую этот |
String | toString() | Возвращает строку, описывающую этот |
Методы, объявленные в классе java.lang.reflect.Executable
getAnnotatedExceptionTypes, getAnnotatedParameterTypes, getAnnotationsByType, getExceptionTypes, getModifiers, getParameters, getParameterTypes Методы, объявленные в классе 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находится в пакете, к которому модуль, содержащийDexports, предоставляет доступ по крайней мере для модуля, содержащегоC. - Член является
protectedstatic,Dнаходится в пакете, к которому модуль, содержащийDпредоставляет доступ по крайней мере для модуля, содержащегоC, иCявляется подклассомD. -
Dнаходится в пакете, к которому модуль, содержащийDopens, предоставляет доступ по крайней мере для модуля, содержащегоC. Все пакеты в безымянных и открытых модулях открыты для всех модулей, и поэтому этот метод всегда выполняется успешно, когдаDнаходится в безымянном или открытом модуле.
Этот метод не может использоваться для включения доступа к закрытым членам, членам с доступом по умолчанию (пакет), защищённым экземплярам членов или защищённым конструкторам, когда класс объявления находится в другом модуле по сравнению с вызывающей стороной, и пакет, содержащий класс объявления, не открыт для модуля вызывающей стороны.
Если менеджер безопасности существует, его метод checkPermission сначала вызывается с разрешением ReflectPermission("suppressAccessChecks").
Также выбрасывается исключение SecurityException, если этот объект является объектом Constructor для класса Class и flag равно true.
- Overrides:
-
setAccessibleв классеAccessibleObject - Parameters:
-
flag- новое значение для флагаaccessible - Throws:
-
InaccessibleObjectException- если доступ не может быть включён -
SecurityException- если запрос отклоняется менеджером безопасности или это конструктор дляjava.lang.Class - See Also:
-
AccessibleObject.trySetAccessible(),MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)
getDeclaringClass
public Class<T> getDeclaringClass()
Возвращает объект Class, представляющий класс, объявляющий конструктор, представленный этим объектом.
- Specified by:
-
getDeclaringClassв интерфейсеMember - Specified by:
-
getDeclaringClassв классеExecutable - Returns:
- объект, представляющий класс объявления базового члена
getName
public String getName()
Возвращает имя этого конструктора в виде строки. Это имя класса объявления конструктора в двоичном формате.
- Specified by:
-
getNameв интерфейсеMember - Specified by:
-
getNameв классеExecutable - Returns:
- простое имя базового члена
getTypeParameters
public TypeVariable<Constructor<T>>[] getTypeParameters()
Возвращает массив объектов TypeVariable, представляющих переменные типа, объявленные в обобщённом объявлении, представленном этим объектом GenericDeclaration, в порядке объявления. Возвращает массив длины 0, если базовое обобщённое объявление не объявляет переменных типа.
- Specified by:
-
getTypeParametersв интерфейсеGenericDeclaration - Specified by:
-
getTypeParametersв классеExecutable - Returns:
- массив объектов
TypeVariable, представляющих переменные типа, объявленные этим обобщённым объявлением - Throws:
-
GenericSignatureFormatError- если обобщённая сигнатура этого обобщённого объявления не соответствует формату, указанному в Спецификации Java™ виртуальной машины - Since:
- 1.5
getParameterCount
public int getParameterCount()
Возвращает количество формальных параметров (явных, неявных или ни тех, ни других) для исполняемого кода, представленного этим объектом.
- Overrides:
-
getParameterCountв классеExecutable - Returns:
- Количество формальных параметров для исполняемого кода, представленного этим объектом
- Since:
- 1.8
getGenericParameterTypes
public Type[] getGenericParameterTypes()
Возвращает массив объектов Type, представляющих формальные типы параметров в порядке объявления для исполняемого кода, представленного этим объектом. Возвращает массив длины 0, если базовый исполняемый код не принимает параметров.
Если формальный тип параметра является параметризованным типом, объект Type , возвращённый для него, должен точно отражать фактические параметры типа, используемые в исходном коде.
Если формальный тип параметра является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.
- Overrides:
-
getGenericParameterTypesв классеExecutable - Returns:
- массив
Type, представляющих формальные типы параметров базового исполняемого кода в порядке объявления - Throws:
-
GenericSignatureFormatError- если обобщённая сигнатура метода не соответствует формату, указанному в Спецификации Java™ виртуальной машины -
TypeNotPresentException- если любой из типов параметров базового исполняемого кода ссылается на необъявленный тип -
MalformedParameterizedTypeException- если любой из типов параметров базового исполняемого кода ссылается на параметризованный тип, который нельзя инстанцировать по каким-либо причинам - Since:
- 1.5
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.Hashtable(int,float)
Если конструктор объявлен для выброса исключений, за списком параметров следует пробел, за которым следует слово "throws", за которым следует разделённый запятыми список типов выбрасываемых исключений.
Единственными возможными модификаторами для конструкторов являются модификаторы доступа public, protected или private. Может быть только один из них или ни одного, если конструктор имеет доступ по умолчанию (пакет).
toGenericString
public String toGenericString()
Возвращает строку, описывающую этот Constructor, включая параметры типа. Строка отформатирована следующим образом: модификаторы доступа конструктора (если есть), за которыми следуют параметры типа в скобках через запятую, далее полное имя объявляющего класса, затем список типов формальных параметров конструктора в скобках через запятую. Если конструктор объявлен как принимающий переменное число аргументов, вместо обозначения последнего параметра как "Type[]", он обозначается как "Type...". Пробел используется для разделения модификаторов доступа друг от друга и от параметров типа или имени класса. Если параметров типа нет, список параметров типа опускается; если список параметров типа присутствует, пробел отделяет его от имени класса. Если конструктор объявлен как выбрасывающий исключения, после списка параметров следует пробел, слово "throws", за которым следует список типов исключений через запятую.
Возможными модификаторами для конструкторов являются модификаторы доступа public, protected или private. Может быть только один из них или ни одного, если конструктор имеет доступ по умолчанию (пакетный доступ).
- Определено в:
-
toGenericStringв классеExecutable - Возвращает:
- строка, описывающая этот
Constructor, включая параметры типа - С тех пор как:
- 1.5
newInstance
public T newInstance(Object... initargs)
throws InstantiationException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException Использует конструктор, представленный этим объектом Constructor, для создания и инициализации нового экземпляра класса, объявляющего конструктор, с указанными параметрами инициализации. Отдельные параметры автоматически раскручиваются для соответствия примитивным формальным параметрам, и как примитивные, так и ссылочные параметры подлежат преобразованиям вызова методов, если это необходимо.
Если число формальных параметров, требуемых базовым конструктором, равно 0, предоставленный массив initargs может иметь длину 0 или быть null.
Если объявляющий класс конструктора является внутренним классом в нестатическом контексте, первым аргументом конструктора должен быть внешний экземпляр; см. раздел 15.9.3 спецификации языка Java™.
Если необходимые проверки доступа и аргументов пройдены, и инициализация будет продолжена, класс, объявляющий конструктор, инициализируется, если он еще не был инициализирован.
Если конструктор завершается нормально, возвращает вновь созданный и инициализированный экземпляр.
- Параметры:
-
initargs- массив объектов, которые должны быть переданы в качестве аргументов вызову конструктора; значения примитивных типов упаковываются в обёртку соответствующего типа (например,floatвFloat) - Возвращает:
- новый объект, созданный путем вызова конструктора, который представляет этот объект
- Исключения:
-
IllegalAccessException- если этот объектConstructorпроверяет контроль доступа языка Java, и базовый конструктор недоступен. -
IllegalArgumentException- если количество фактических и формальных параметров различно; если преобразование для распаковки примитивных аргументов завершается неудачно; или если, после возможного распаковки, значение параметра не может быть преобразовано к соответствующему типу формального параметра с помощью преобразования вызова метода; если этот конструктор относится к типу перечисления. -
InstantiationException- если класс, который объявляет базовый конструктор, представляет абстрактный класс. -
InvocationTargetException- если базовый конструктор выбрасывает исключение. -
ExceptionInInitializerError- если инициализация, вызванная этим методом, завершается неудачно.
isVarArgs
public boolean isVarArgs()
Возвращает true , если данное исполняемое действие было объявлено как принимающее переменное число аргументов; в противном случае возвращает false.
- Переопределяет:
-
isVarArgsв классеExecutable - Возвращает:
-
trueтогда и только тогда, когда данное исполняемое действие было объявлено как принимающее переменное число аргументов. - С тех пор как:
- 1.5
isSynthetic
public boolean isSynthetic()
Возвращает true , если данное исполняемое действие является искусственным; в противном случае возвращает false.
- Определено в:
-
isSyntheticв интерфейсеMember - Переопределяет:
-
isSyntheticв классеExecutable - Возвращает:
- true, если и только если это исполняемое действие является искусственным, как определено в спецификации языка Java™.
- С тех пор как:
- 1.5
getAnnotation
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.
- Определено в:
-
getAnnotationв интерфейсеAnnotatedElement - Переопределяет:
-
getAnnotationв классеExecutable - Параметры типа:
-
T- тип аннотации, для которой нужно выполнить запрос и вернуть, если она присутствует - Параметры:
-
annotationClass- объект Class, соответствующий типу аннотации - Возвращает:
- аннотация этого элемента для указанного типа аннотации, если она присутствует на этом элементе, иначе null
- Исключения:
-
NullPointerException- если заданный класс аннотации равен null - С тех пор как:
- 1.5
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. Этот метод игнорирует унаследованные аннотации. Если на этом элементе нет аннотаций непосредственно, значением возврата является массив длиной 0. Вызывающий метод имеет свободу изменения возвращаемого массива; это не повлияет на массивы, возвращаемые другим вызывающим сторонам.
- Определено в:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Переопределяет:
-
getDeclaredAnnotationsв классеAccessibleObject - Возвращает:
- аннотации, непосредственно присутствующие на этом элементе
- С тех пор как:
- 1.5
getParameterAnnotations
public Annotation[][] getParameterAnnotations()
Возвращает массив массивов Annotation, представляющих аннотации формальных параметров, в порядке объявления, исполняемого действия Executable , представленного этим объектом. Синтетические и обязательные параметры (см. объяснение ниже), такие как внешний параметр «this» для конструктора внутреннего класса, будут представлены в возвращаемом массиве. Если у исполняемого действия нет параметров (формальных, синтетических и обязательных), будет возвращен массив нулевой длины. Если у исполняемого действия есть один или более параметров, для каждого параметра без аннотаций возвращается вложенный массив нулевой длины. Объекты аннотации, содержащиеся в возвращаемых массивах, сериализуемы. Вызывающий метод имеет право изменить возвращаемые массивы; это не повлияет на массивы, возвращаемые другим вызывающим сторонам. Компилятор может добавлять дополнительные параметры, которые неявно объявлены в исходном коде («обязательные»), а также параметры, которые не являются ни явно, ни неявно объявленными в исходном коде («синтетические»), в список параметров метода. См. Parameter для получения дополнительной информации.
- Определено в:
-
getParameterAnnotationsв классеExecutable - Возвращает:
- массив массивов, представляющих аннотации формальных и неявных параметров в порядке объявления исполняемого действия, представленного этим объектом
- С тех пор как:
- 1.5
- См. также:
-
Parameter,AnnotatedElement.getAnnotations()
getAnnotatedReturnType
public AnnotatedType getAnnotatedReturnType()
Возвращает объект AnnotatedType, который представляет использование типа для указания возвращаемого типа метода/конструктора, представленного этим объектом Executable. Если этот объект Executable представляет конструктор, объект
AnnotatedType представляет тип созданного объекта. Если этот объект Executable представляет метод, объект
AnnotatedType представляет использование типа для указания возвращаемого типа метода.
- Определено в:
-
getAnnotatedReturnTypeв классеExecutable - Возвращает:
- объект, представляющий возвращаемый тип метода или конструктора, представленного этим объектом
Executable - С тех пор как:
- 1.8
getAnnotatedReceiverType
public AnnotatedType getAnnotatedReceiverType()
Возвращает объект AnnotatedType, который представляет использование типа для указания типа получателя метода/конструктора, представленного этим объектом Executable. Тип получателя метода/конструктора доступен только если метод/конструктор имеет параметр получателя (JLS 8.4.1). Если этот объект
Executable представляет метод экземпляра или конструктор внутреннего класса-члена и метод/конструктор либо не имеет параметра получателя, либо имеет параметр получателя без аннотаций на типе, то возвращаемое значение — объект AnnotatedType , представляющий элемент без аннотаций. Если этот объект Executable представляет статический метод или конструктор верхнего уровня, статического члена, локального или анонимного класса, то возвращаемое значение равно null.
- Переопределяет:
-
getAnnotatedReceiverTypeв классеExecutable - Возвращает:
- объект, представляющий тип получателя метода или конструктора, представленного этим объектом
Executableилиnull, если у этого объектаExecutableне может быть параметра получателя - С тех пор как:
- 1.8
© 1993, 2020, 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/11/docs/api/java.base/java/lang/reflect/Constructor.html