- 类型参数:
T- 声明构造函数的类
- 所有已实现的接口:
AnnotatedElement,GenericDeclaration,Member
Constructor 提供有关类的单个构造函数的信息和访问权限。
Constructor 允许在将实际参数与底层构造函数的形式参数匹配到 newInstance() 时发生扩大转换,但如果发生缩小转换则抛出 IllegalArgumentException。
- 自从:
- 1.1
- 参见:
-
字段摘要
-
方法总结
修饰符和类型方法描述boolean将此Constructor与指定对象进行比较。返回一个AnnotatedType对象,该对象表示使用一种类型来指定此Executable对象表示的方法/构造函数的接收者类型。返回一个AnnotatedType对象,该对象表示使用一种类型来指定此可执行文件表示的方法/构造函数的返回类型。<T extends Annotation>
TgetAnnotation(Class<T> annotationClass) 如果此类注解为 present ,则返回此元素针对指定类型的注解,否则为 null。返回此元素上的 directly present 注释。返回表示声明此对象表示的构造函数的类的Class对象。Class<?>[]返回一个Class对象数组,这些对象表示声明由该对象表示的底层可执行文件抛出的异常类型。Type[]返回一个Type对象数组,这些对象表示声明将由此可执行对象抛出的异常。Type[]返回一个Type对象数组,这些对象按声明顺序表示此对象表示的可执行文件的形式参数类型。int返回此对象表示的可执行文件的 Java 语言 modifiers。getName()以字符串形式返回此构造方法的名称。Annotation[][]返回Annotation数组的数组,这些数组表示形式参数上的注释,按声明顺序,由该对象表示的Executable。int返回此对象表示的可执行文件的形式参数(无论是显式声明还是隐式声明或两者都不是)的数量。Class<?>[]返回一个Class对象数组,这些对象按声明顺序表示此对象表示的可执行文件的形式参数类型。TypeVariable<Constructor<T>>[]返回一个TypeVariable对象数组,这些对象表示由此GenericDeclaration对象表示的泛型声明所声明的类型变量,按声明顺序排列。inthashCode()返回此Constructor的哈希码。boolean如果此可执行文件是合成构造,则返回true;否则返回false。boolean如果此可执行文件被声明为采用可变数量的参数,则返回true;否则返回false。newInstance(Object... initargs) 使用此Constructor对象表示的构造函数,使用指定的初始化参数创建和初始化构造函数声明类的新实例。voidsetAccessible(boolean flag) 将此反射对象的accessible标志设置为指示的boolean。返回描述此Constructor的字符串,包括类型参数。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.reflect.AnnotatedElement 中声明的方法
getAnnotations, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent
-
方法详情
-
setAccessible
public void setAccessible(boolean flag) 将此反射对象的accessible标志设置为指示的boolean。值true表示反射对象在使用时应禁止检查 Java 语言访问控制。值false表示反射对象在使用时应强制检查 Java 语言访问控制,并在类描述中注明变化。如果以下任何一项成立,则类
C中的调用者可以使用此方法来启用对declaring classD的member的访问:C和D在同一模块中。- 成员是
public和D是public在一个包中,模块包含Dexports到至少包含C的模块。 - 成员是
protectedstatic,D是包中的public,包含D的模块导出到至少包含C的模块,而C是D的子类。 D在包含Dopens的模块到至少包含C的模块的包中。未命名和开放模块中的所有包都对所有模块开放,因此当D在未命名或开放模块中时,此方法总是成功。
当且仅当:
- 成员是
public,D是public,模块无条件包含Dexports。
当声明类与调用者位于不同的模块中并且包含声明类的包未向其开放时,此方法不能用于启用对私有成员、具有默认(包)访问权限的成员、受保护实例成员或受保护构造方法的访问调用者的模块。
此方法不能用于启用 write 对 non-modifiable final 字段的访问。以下字段是不可修改的:
true时的accessible标志抑制 Java 语言访问控制检查以仅启用 read 对这些不可修改的最终字段的访问。如果有安全管理器,它的
checkPermission方法将首先以ReflectPermission("suppressAccessChecks")权限调用。如果此对象是类
Class的Constructor对象且flag为真,也会抛出SecurityException。- 重写:
setAccessible在类AccessibleObject中- 参数:
flag-accessible标志的新值- 抛出:
InaccessibleObjectException- 如果无法启用访问SecurityException- 如果请求被安全管理器拒绝或者这是java.lang.Class的构造函数- 参见:
-
getDeclaringClass
返回表示声明此对象表示的构造函数的类的Class对象。- 指定者:
getDeclaringClass在接口Member中- 指定者:
getDeclaringClass在类Executable中- 返回:
- 表示底层成员的声明类的对象
-
getName
以字符串形式返回此构造方法的名称。这是构造方法的声明类的二进制名称。- 指定者:
getName在接口Member中- 指定者:
getName在类Executable中- 返回:
- 基础成员的简单名称
-
getModifiers
public int getModifiers()返回此对象表示的可执行文件的 Java 语言 modifiers。- 指定者:
getModifiers在接口Member中- 指定者:
getModifiers在类Executable中- 返回:
- 此对象表示的可执行文件的 Java 语言 modifiers
- 看Java 语言规范:
-
8.8.3 构造函数修饰符
- 参见:
-
getTypeParameters
返回一个TypeVariable对象数组,这些对象表示由此GenericDeclaration对象表示的泛型声明所声明的类型变量,按声明顺序排列。如果基础泛型声明未声明类型变量,则返回长度为 0 的数组。- 指定者:
getTypeParameters在接口GenericDeclaration中- 指定者:
getTypeParameters在类Executable中- 返回:
-
一个
TypeVariable对象数组,表示此泛型声明所声明的类型变量 - 抛出:
GenericSignatureFormatError- 如果此通用声明的通用签名不符合中指定的格式Java 虚拟机规范- 自从:
- 1.5
-
getParameterTypes
返回一个Class对象数组,这些对象按声明顺序表示此对象表示的可执行文件的形式参数类型。如果底层可执行文件不带参数,则返回长度为 0 的数组。请注意,某些内部类的构造函数除了显式声明的参数外,还可能具有隐式声明的参数。- 指定者:
getParameterTypes在类Executable中- 返回:
- 此对象表示的可执行文件的参数类型
-
getParameterCount
public int getParameterCount()返回此对象表示的可执行文件的形式参数(无论是显式声明还是隐式声明或两者都不是)的数量。- 指定者:
getParameterCount在类Executable中- 返回:
- 此对象表示的可执行文件的形参数量
- 自从:
- 1.8
-
getGenericParameterTypes
返回一个Type对象数组,这些对象按声明顺序表示此对象表示的可执行文件的形式参数类型。如果底层可执行文件不带参数,则返回长度为 0 的数组。请注意,某些内部类的构造函数除了显式声明的参数外,还可能具有隐式声明的参数。另请注意,作为 建模神器 ,返回参数的数量可能会有所不同,具体取决于是否存在通用信息。如果存在通用信息,则仅返回源中明确存在的参数;如果不存在通用信息,则也可以返回隐式和合成参数。如果形式参数类型是参数化类型,则为其返回的
Type对象必须准确反映源代码中使用的实际类型参数。如果形式参数类型是类型变量或参数化类型,则创建它。否则,它被解决了。
- 重写:
getGenericParameterTypes在类Executable中- 返回:
-
一个
Type数组,表示底层可执行文件的形式参数类型,按声明顺序排列 - 抛出:
GenericSignatureFormatError- 如果泛型方法签名不符合指定的格式Java 虚拟机规范TypeNotPresentException- 如果底层可执行文件的任何参数类型引用不存在的类型声明MalformedParameterizedTypeException- 如果任何底层可执行文件的参数类型引用了由于任何原因无法实例化的参数化类型- 自从:
- 1.5
-
getExceptionTypes
返回一个Class对象数组,这些对象表示声明由该对象表示的底层可执行文件抛出的异常类型。如果可执行文件在其throws子句中声明没有异常,则返回一个长度为 0 的数组。- 指定者:
getExceptionTypes在类Executable中- 返回:
- 声明为由此对象表示的可执行文件抛出的异常类型
-
getGenericExceptionTypes
返回一个Type对象数组,这些对象表示声明将由此可执行对象抛出的异常。如果底层可执行文件在其throws子句中声明没有异常,则返回一个长度为 0 的数组。如果异常类型是类型变量或参数化类型,则创建它。否则,它被解决了。
- 重写:
getGenericExceptionTypes在类Executable中- 返回:
- 表示底层可执行文件抛出的异常类型的 Types 数组
- 抛出:
GenericSignatureFormatError- 如果泛型方法签名不符合指定的格式Java 虚拟机规范TypeNotPresentException- 如果底层可执行文件的throws子句引用不存在的类型声明MalformedParameterizedTypeException- 如果底层可执行文件的throws子句引用了由于任何原因无法实例化的参数化类型- 自从:
- 1.5
-
equals
将此Constructor与指定对象进行比较。如果对象相同,则返回 true。如果两个Constructor对象由同一个类声明并且具有相同的形参类型,则它们是相同的。 -
hashCode
public int hashCode()返回此Constructor的哈希码。哈希码与底层构造函数的声明类名的哈希码相同。 -
toString
返回描述此Constructor的字符串。该字符串的格式为构造函数访问修饰符(如果有),后跟声明类的完全限定名称,再后是用括号括起来的逗号分隔的构造函数形式参数类型列表。例如:public java.util.HashMap(int,float)如果声明构造函数抛出异常,则参数列表后跟一个空格,然后是单词“
throws”,然后是抛出的异常类型的逗号分隔列表。构造函数唯一可能的修饰符是访问修饰符
public、protected或private。只有其中一个可能出现,如果构造函数具有默认(包)访问权限,则不会出现。- 重写:
toString在类Object中- 返回:
-
描述这个
Constructor的字符串 - 看Java 语言规范:
-
8.8.3 构造函数修饰符
8.9.2 枚举主体声明
-
toGenericString
返回描述此Constructor的字符串,包括类型参数。该字符串的格式为构造函数访问修饰符(如果有),后跟尖括号逗号分隔的构造函数类型参数列表(如果有),包括类型参数的信息范围(如果有),后跟完全限定名称声明类,后跟用括号括起来的逗号分隔的构造函数的通用形参类型列表。如果此构造函数被声明为采用可变数量的参数,而不是将最后一个参数表示为“Type[]”,则将其表示为“Type...”。空格用于将访问修饰符彼此分隔开,并与类型参数或类名分隔开。如果没有类型参数,则省略类型参数列表;如果存在类型参数列表,则用空格将列表与类名分隔开。如果构造函数被声明为抛出异常,则参数列表后跟一个空格,然后是单词“throws”,然后是通用抛出异常类型的逗号分隔列表。构造函数唯一可能的修饰符是访问修饰符
public、protected或private。只有其中一个可能出现,如果构造函数具有默认(包)访问权限,则不会出现。- 指定者:
toGenericString在类Executable中- 返回:
-
描述这个
Constructor的字符串,包括类型参数 - 看Java 语言规范:
-
8.8.3 构造函数修饰符
8.9.2 枚举主体声明
- 自从:
- 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如果此可执行文件被声明为采用可变数量的参数;否则返回false- 看Java 语言规范:
-
8.4.1 形式参数
- 自从:
- 1.5
-
isSynthetic
public boolean isSynthetic()如果此可执行文件是合成构造,则返回true;否则返回false。- 指定者:
isSynthetic在接口Member中- 重写:
isSynthetic在类Executable中- 返回:
- 当且仅当此可执行文件是一个合成构造时才为真Java 语言规范.
- 看Java 语言规范:
-
13.1 二进制形式
- 看Java 虚拟机规范:
-
4.6 方法
- 自从:
- 1.5
- 参见:
-
getAnnotation
如果此类注解为 present ,则返回此元素针对指定类型的注解,否则为 null。请注意,此方法返回的任何注解都是声明注解。
- 指定者:
getAnnotation在接口AnnotatedElement中- 重写:
getAnnotation在类Executable中- 类型参数:
T- 要查询并返回的注释类型(如果存在)- 参数:
annotationClass——注解类型对应的Class对象- 返回:
- 如果此元素上存在此元素的指定注解类型的注解,则为 null
- 抛出:
NullPointerException- 如果给定的注释类为 null- 自从:
- 1.5
-
getDeclaredAnnotations
返回此元素上的 directly present 注释。此方法忽略继承的注释。如果该元素上没有注解directly present,则返回值为长度为0的数组。该方法的调用者可以自由修改返回的数组;它不会影响返回给其他调用者的数组。请注意,此方法返回的任何注释都是声明注解。
- 指定者:
getDeclaredAnnotations在接口AnnotatedElement中- 重写:
getDeclaredAnnotations在类AccessibleObject中- 返回:
- 注释直接出现在这个元素上
- 自从:
- 1.5
-
getParameterAnnotations
返回Annotation数组的数组,这些数组表示形式参数上的注释,按声明顺序,由该对象表示的Executable。合成参数和强制参数(参见下面的解释),例如内部类构造函数的外部“this”参数将在返回的数组中表示。如果可执行文件没有参数(意味着没有正式的、没有综合的、没有强制的参数),将返回一个零长度数组。如果Executable有一个或多个参数,则为每个没有注释的参数返回一个长度为零的嵌套数组。返回数组中包含的注释对象是可序列化的。该方法的调用者可以自由修改返回的数组;它不会影响返回给其他调用者的数组。编译器可能会在方法的参数列表中添加在源代码中隐式声明的额外参数(“强制”),以及在源代码中既没有隐式声明也没有显式声明的参数(“合成”)。有关详细信息,请参阅Parameter。请注意,此方法返回的任何注释都是声明注解。
- 指定者:
getParameterAnnotations在类Executable中- 返回:
- 一个数组数组,表示此对象表示的可执行文件的形式参数和隐式参数的注释,按声明顺序排列
- 自从:
- 1.5
- 参见:
-
getAnnotatedReturnType
返回一个AnnotatedType对象,该对象表示使用一种类型来指定此可执行文件表示的方法/构造函数的返回类型。如果这个Executable对象表示构造函数,那么AnnotatedType对象表示构造对象的类型。如果这个Executable对象代表一个方法,那么AnnotatedType对象代表使用一个类型来指定方法的返回类型。- 指定者:
getAnnotatedReturnType在类Executable中- 返回:
-
表示此
Executable表示的方法或构造函数的返回类型的对象 - 自从:
- 1.8
-
getAnnotatedReceiverType
返回一个AnnotatedType对象,该对象表示使用一种类型来指定此Executable对象表示的方法/构造函数的接收者类型。仅当方法/构造函数具有接收者参数 (JLS 8.4.1) 时,方法/构造函数的接收者类型才可用。如果此Executable对象 represents an instance method or represents a constructor of an inner member class 和方法/构造函数 either 没有接收者参数或接收者参数在其类型上没有注释,则返回值是一个AnnotatedType对象,代表一个没有注释的元素。如果此Executable对象表示静态方法或表示顶级、静态成员、本地或匿名类的构造函数,则返回值为 null。- 重写:
getAnnotatedReceiverType在类Executable中- 返回:
-
表示由 this
Executable或null表示的方法或构造函数的接收者类型的对象,如果 thisExecutable不能有接收者参数 - 自从:
- 1.8
-