- 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
构造器
提供有关类的单个构造函数的信息和访问权限。构造器
允许在将实际参数与newInstance()与底层构造函数的形式参数匹配时进行扩展转换,但如果发生缩小转换则抛出IllegalArgumentException
。- 从以下版本开始:
- 1.1
- 另请参见:
-
Member
,类
,Class.getConstructors()
,Class.getConstructor(Class[])
,Class.getDeclaredConstructors()
-
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
equals(Object obj)
将此构造器
与指定的对象进行比较。AnnotatedType
getAnnotatedReceiverType()
返回一个AnnotatedType
对象,该对象表示使用类型来指定此Executable
对象所表示的方法/构造函数的接收器类型。AnnotatedType
getAnnotatedReturnType()
返回一个AnnotatedType
对象,该对象表示使用类型来指定此可执行文件所表示的方法/构造函数的返回类型。<T extends Annotation>
TgetAnnotation(类<T> annotationClass)
返回该元素的,如果这样的注释 ,否则返回null指定类型的注释。Annotation[]
getDeclaredAnnotations()
返回 直接出现在此元素上的注释。类<T>
getDeclaringClass()
返回表示声明此对象表示的构造方法的类的类
对象。Type[]
getGenericExceptionTypes()
返回Type
对象的数组,Type
对象表示声明由此可执行对象引发的异常。Type[]
getGenericParameterTypes()
返回Type
对象的数组,Type
对象表示此对象表示的可执行文件的声明顺序的形式参数类型。String
getName()
以字符串形式返回此构造函数的名称。Annotation[][]
getParameterAnnotations()
返回Annotation
的数组数组,这些数组表示由此对象表示的Executable
声明顺序的形式参数的注释。int
getParameterCount()
返回此对象表示的可执行文件的形式参数(无论是显式声明还是隐式声明,或两者都不)。TypeVariable<构造器<T>>[]
getTypeParameters()
返回的数组TypeVariable
对象表示通过此表示的一般声明声明的类型变量GenericDeclaration
目的,在声明的顺序。int
hashCode()
返回此构造器
的哈希构造器
。boolean
isSynthetic()
如果此可执行文件是合成构造,则返回true
; 否则返回false
。boolean
isVarArgs()
如果声明此可执行文件采用可变数量的参数,则返回true
; 否则返回false
。T
newInstance(Object... initargs)
使用此构造器
对象表示的构造方法,使用指定的初始化参数创建和初始化构造函数声明类的新实例。void
setAccessible(boolean flag)
将此反射对象的accessible
标志设置为指示的布尔值。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.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
是public
在一个包中,该模块包含D
输出
至少包含C
的模块。 - 所述构件是
protected
static
,D
是public
在于包含模块的封装D
出口到至少包含模块C
,和C
是的一个子类D
。 -
D
是一个包,该模块包含D
opens
至少包含C
的模块。 未命名和打开模块中的所有软件包都对所有模块开放,因此当D
位于未命名或打开的模块中时,此方法始终成功。
当声明类与调用者位于不同的模块且包含声明类的包未打开时,此方法不能用于启用对私有成员,具有默认(包)访问的成员,受保护的实例成员或受保护的构造函数的访问来电者的模块。
如果有安全管理器,则首先使用
ReflectPermission("suppressAccessChecks")
权限调用其checkPermission
方法。一个
SecurityException
如果这个对象是也抛出构造器
对象类类
和flag
是真实的。- 重写:
-
setAccessible
类别AccessibleObject
- 参数
-
flag
-accessible
标志的新值 - 异常
-
InaccessibleObjectException
- 如果无法启用访问权限 -
SecurityException
- 如果安全管理器拒绝了请求,或者这是java.lang.Class
的构造java.lang.Class
- 另请参见:
-
AccessibleObject.trySetAccessible()
,MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)
-
-
getDeclaringClass
public 类<T> getDeclaringClass()
返回表示声明此对象表示的构造方法的类的类
对象。- Specified by:
-
getDeclaringClass
接口Member
- Specified by:
-
getDeclaringClass
类Executable
- 结果
- 表示底层成员的声明类的对象
-
getName
public String getName()
以字符串形式返回此构造函数的名称。 这是构造函数声明类的二进制名称。- Specified by:
-
getName
接口Member
- Specified by:
-
getName
类别Executable
- 结果
- 底层成员的简单名称
-
getTypeParameters
public TypeVariable<构造器<T>>[] getTypeParameters()
返回的数组TypeVariable
对象表示通过此表示的一般声明声明的类型变量GenericDeclaration
目的,在声明的顺序。 如果基础泛型声明未声明类型变量,则返回长度为0的数组。- Specified by:
-
getTypeParameters
在GenericDeclaration
- Specified by:
-
getTypeParameters
在类Executable
- 结果
- 一组
TypeVariable
对象,表示此泛型声明声明的类型变量 - 异常
-
GenericSignatureFormatError
- 如果此通用声明的通用签名不符合 The Java™ Virtual Machine Specification中指定的格式 - 从以下版本开始:
- 1.5
-
getParameterCount
public int getParameterCount()
返回此对象表示的可执行文件的形式参数(无论是显式声明还是隐式声明,或两者都不)。- 重写:
-
getParameterCount
在类Executable
- 结果
- 此对象表示的可执行文件的形式参数的数量
- 从以下版本开始:
- 1.8
-
getGenericParameterTypes
public Type[] getGenericParameterTypes()
返回Type
对象的数组,Type
对象表示此对象表示的可执行文件的声明顺序的形式参数类型。 如果底层可执行文件不带参数,则返回长度为0的数组。如果形式参数类型是参数化类型,则
Type
返回的Type
对象必须准确反映源代码中使用的实际类型参数。如果形式参数类型是类型变量或参数化类型,则创建它。 否则,它就解决了。
- 重写:
-
getGenericParameterTypes
在类Executable
- 结果
- 一个
Type
的数组,以声明顺序表示底层可执行文件的形式参数类型 - 异常
-
GenericSignatureFormatError
- 如果通用方法签名不符合 The Java™ Virtual Machine Specification中指定的格式 -
TypeNotPresentException
- 如果基础可执行文件的任何参数类型引用了不存在的类型声明 -
MalformedParameterizedTypeException
- 如果任何底层可执行文件的参数类型引用无法以任何原因实例化的参数化类型 - 从以下版本开始:
- 1.5
-
getGenericExceptionTypes
public Type[] getGenericExceptionTypes()
返回Type
对象的数组,Type
对象表示声明由此可执行对象引发的异常。 如果底层可执行文件在其throws
子句中未声明异常,则返回长度为0的数组。如果异常类型是类型变量或参数化类型,则会创建它。 否则,它就解决了。
- 重写:
-
getGenericExceptionTypes
类别Executable
- 结果
- 一个Types数组,表示底层可执行文件抛出的异常类型
- 异常
-
GenericSignatureFormatError
- 如果通用方法签名不符合 The Java™ Virtual Machine Specification中指定的格式 -
TypeNotPresentException
- 如果底层可执行文件的throws
子句引用了不存在的类型声明 -
MalformedParameterizedTypeException
- 如果基础可执行文件的throws
子句引用无法以任何原因实例化的参数化类型 - 从以下版本开始:
- 1.5
-
equals
public boolean equals(Object obj)
将此构造器
与指定的对象进行比较。 如果对象相同,则返回true。 如果两个构造器
对象由同一个类声明并且具有相同的形式参数类型,则它们是相同的。- 重写:
-
equals
在类Object
- 参数
-
obj
- 要与之比较的引用对象。 - 结果
-
true
如果此对象与obj参数相同; 否则为false
。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此构造器
的哈希构造器
。 哈希码与底层构造函数声明类名的哈希码相同。- 重写:
-
hashCode
在类Object
- 结果
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
toString
public String toString()
返回描述此构造器
的字符串。 该字符串被格式化为构造函数访问修饰符(如果有),后跟声明类的完全限定名称,后跟构造函数的形式参数类型的带括号的逗号分隔列表。 例如:public java.util.Hashtable(int,float)
如果声明构造函数抛出异常,则参数列表后跟一个空格,后跟单词“
throws
”,后跟逗号分隔的抛出异常类型列表。对构造方法唯一可能的修饰符是访问修饰符
public
,protected
或private
。 如果构造函数具有默认(包)访问权限,则只能显示其中一个,或者不显示。
-
toGenericString
public String toGenericString()
返回描述此构造器
的字符串,包括类型参数。 该字符串被格式化为构造函数访问修饰符(如果有),后跟一个以角度括起来的逗号分隔的构造函数类型参数列表(如果有),后跟声明类的完全限定名称,后跟带括号的逗号 - 分离的构造函数的通用形式参数类型列表。 如果声明此构造函数采用可变数量的参数,而不是将最后一个参数表示为“Type[]
”,则将其表示为“Type...
”。 空格用于将访问修饰符彼此分开,并与类型参数或类名分开。 如果没有类型参数,则省略类型参数列表; 如果存在类型参数列表,则空格将列表与类名分开。 如果声明构造函数抛出异常,则参数列表后跟一个空格,后跟单词“throws
”,后跟逗号分隔的泛型异常类型列表。对构造方法唯一可能的修饰符是访问修饰符
public
,protected
或private
。 如果构造函数具有默认(包)访问权限,则只能显示其中一个,或者不显示。- Specified by:
-
toGenericString
类Executable
- 结果
- 描述此
构造器
的字符串,包括类型参数 - 从以下版本开始:
- 1.5
- See The Java™ Language Specification:
- 8.8.3构造函数修饰符,8.9.2枚举体声明
-
newInstance
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
使用此构造器
对象表示的构造函数,使用指定的初始化参数创建和初始化构造函数声明类的新实例。 各个参数自动展开以匹配原始形式参数,并且原始参数和参考参数都根据需要进行方法调用转换。如果底层构造函数所需的形式参数的数量为0,则提供的
initargs
数组的长度可以为0或null。如果构造函数的声明类是非静态上下文中的内部类,则构造函数的第一个参数需要是封闭实例; 见The Java™ Language Specification的第15.9.3 节 。
如果所需的访问和参数检查成功并且实例化将继续,则构造函数的声明类如果尚未初始化则初始化。
如果构造函数正常完成,则返回新创建的初始化实例。
- 参数
-
initargs
- 作为构造函数调用的参数传递的对象数组; 原始类型的值包装在适当类型的包装器对象中(例如float
中的float ) - 结果
- 通过调用此对象表示的构造函数创建的新对象
- 异常
-
IllegalAccessException
- 如果此构造器
对象强制执行Java语言访问控制且基础构造函数不可访问。 -
IllegalArgumentException
- 如果实际参数和形式参数的数量不同; 如果原始参数的展开转换失败; 或者,如果在可能的解包之后,参数值不能通过方法调用转换转换为相应的形式参数类型; 如果此构造函数属于枚举类型。 -
InstantiationException
- 如果声明基础构造函数的类表示抽象类。 -
InvocationTargetException
- 如果底层构造函数抛出异常。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。
-
isVarArgs
public boolean isVarArgs()
如果声明此可执行文件采用可变数量的参数,则返回true
; 否则返回false
。- 重写:
-
isVarArgs
在类Executable
- 结果
-
true
如果仅在声明此可执行文件时采用可变数量的参数。 - 从以下版本开始:
- 1.5
-
isSynthetic
public boolean isSynthetic()
如果此可执行文件是合成构造,则返回true
; 否则返回false
。- Specified by:
-
isSynthetic
在界面Member
- 重写:
-
isSynthetic
类Executable
- 结果
- 当且仅当此可执行文件是 The Java™ Language Specification定义的合成构造 时才返回true 。
- 从以下版本开始:
- 1.5
- See The Java™ Language Specification:
- 13.1二进制形式
-
getAnnotation
public <T extends Annotation> T getAnnotation(类<T> annotationClass)
返回该元素的,如果这样的注释 ,否则返回null指定类型的注释。- Specified by:
-
getAnnotation
,界面AnnotatedElement
- 重写:
-
getAnnotation
类Executable
- 参数类型
-
T
- 要查询的注释的类型,如果存在则返回 - 参数
-
annotationClass
- 与注释类型对应的Class对象 - 结果
- 如果此元素上存在指定注释类型,则此元素的注释,否则为null
- 异常
-
NullPointerException
- 如果给定的注释类为null - 从以下版本开始:
- 1.5
-
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
返回直接出现在此元素上的注释。 此方法忽略继承的注释。 如果此元素上没有直接存在注释,则返回值为长度为0的数组。此方法的调用者可以自由修改返回的数组; 它对返回给其他调用者的数组没有影响。- Specified by:
-
getDeclaredAnnotations
在界面AnnotatedElement
- 重写:
-
getDeclaredAnnotations
在类AccessibleObject
- 结果
- 注释直接出现在此元素上
- 从以下版本开始:
- 1.5
-
getParameterAnnotations
public Annotation[][] getParameterAnnotations()
返回Annotation
的数组数组,这些数组表示由此对象表示的Executable
声明顺序的形式参数的注释。 合成和强制参数(请参阅下面的说明),例如内部类构造函数的外部“this”参数将在返回的数组中表示。 如果可执行文件没有参数(意味着没有正式参数,没有合成参数,也没有强制参数),则返回零长度数组。 如果Executable
具有一个或多个参数,则为没有注释的每个参数返回长度为零的嵌套数组。 返回的数组中包含的注释对象是可序列化的。 此方法的调用者可以自由修改返回的数组; 它对返回给其他调用者的数组没有影响。 编译器可以添加在源(“强制”)中隐式声明的额外参数,以及既不在源(“合成”)中隐式或显式声明到方法的参数列表的参数。 有关更多信息,请参阅Parameter
。- Specified by:
-
getParameterAnnotations
在类Executable
- 结果
- 一个数组数组,以声明顺序表示此对象表示的可执行文件的形式和隐式参数的注释
- 从以下版本开始:
- 1.5
- 另请参见:
-
Parameter
,AnnotatedElement.getAnnotations()
-
getAnnotatedReturnType
public AnnotatedType getAnnotatedReturnType()
返回一个AnnotatedType
对象,该对象表示使用类型来指定此可执行文件所表示的方法/构造函数的返回类型。 如果此Executable
对象表示构造函数,则AnnotatedType
对象表示构造对象的类型。 如果此Executable
对象表示方法,则AnnotatedType
对象表示使用类型指定方法的返回类型。- Specified by:
-
getAnnotatedReturnType
在类Executable
- 结果
- 表示此
Executable
表示的方法或构造函数的返回类型的对象 - 从以下版本开始:
- 1.8
-
getAnnotatedReceiverType
public AnnotatedType getAnnotatedReceiverType()
返回一个AnnotatedType
对象,该对象表示使用类型来指定此Executable
对象所表示的方法/构造函数的接收器类型。 仅当方法/构造函数具有接收器参数(JLS 8.4.1)时,方法/构造函数的接收器类型才可用。 如果此Executable
对象表示一个实例方法或表示内部件类的构造 ,并且所述方法/构造或者具有没有接收器参数或与它的类型没有注释的接收器参数,则返回值是一个AnnotatedType
表示对象没有注释的元素。 如果此Executable
对象表示静态方法或表示顶级,静态成员,本地或匿名类的构造函数,则返回值为null。- 重写:
-
getAnnotatedReceiverType
类别Executable
- 结果
- 如果此
Executable
不具有接收器参数,则表示此Executable
或null
表示的方法或构造函数的接收器类型的对象 - 从以下版本开始:
- 1.8
-
-