java.lang.reflect

接口
异常
错误
java.lang.Object
  继承者 java.lang.reflect.AccessibleObject
      继承者 java.lang.reflect.Constructor<T>
类型参数:
T - 在其中声明构造方法的类。
所有已实现的接口:
AnnotatedElement, GenericDeclaration, Member

public final class Constructor<T>
     
extends AccessibleObject
implements GenericDeclaration, Member

Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。

Constructor 允许在将实参与带有底层构造方法的形参的 newInstance() 匹配时进行扩展转换,但是如果发生收缩转换,则抛出 IllegalArgumentException

另请参见:
Member, Class, Class.getConstructors(), Class.getConstructor(Class[]), Class.getDeclaredConstructors()

字段摘要
 
从接口 java.lang.reflect.Member 继承的字段
DECLARED, PUBLIC
 
方法摘要
 boolean equals(Object obj)
          将此 Constructor 对象与指定的对象进行比较。
<T extends Annotation>
T
getAnnotation(Class<T> annotationClass)
          如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
 Annotation[] getDeclaredAnnotations()
          返回直接存在于此元素上的所有注释。
 Class<T> getDeclaringClass()
          返回 Class 对象,该对象表示声明由此 Constructor 对象表示的构造方法的类。
 Class<?>[] getExceptionTypes()
          返回一组表示声明要抛出的异常类型的 Class 对象,这些异常是由此 Constructor 对象表示的底层构造方法抛出的。
 Type[] getGenericExceptionTypes()
          返回一组 Type 对象,这些对象表示声明要由此 Constructor 对象抛出的异常。
 Type[] getGenericParameterTypes()
          按照声明顺序返回一组 Type 对象,这些对象表示此 Constructor 对象所表示的方法的形参类型。
 int getModifiers()
          以整数形式返回此 Constructor 对象所表示构造方法的 Java 语言修饰符。
 String getName()
          以字符串形式返回此构造方法的名称。
 Annotation[][] getParameterAnnotations()
          按照声明顺序返回一组数组,这些数组表示通过此 Constructor 对象表示的方法的形参上的注释。
 Class<?>[] getParameterTypes()
          按照声明顺序返回一组 Class 对象,这些对象表示此 Constructor 对象所表示构造方法的形参类型。
 TypeVariable<Constructor<T>>[] getTypeParameters()
          按照声明顺序返回一组 TypeVariable 对象,这些对象表示通过此 GenericDeclaration 对象所表示的一般声明来声明的类型变量。
 int hashCode()
          返回此 Constructor 的哈希码。
 boolean isSynthetic()
          如果此构造方法是一个复合构造方法,则返回 true;否则返回 false
 boolean isVarArgs()
          如果声明此构造方法可以带可变数量的参数,则返回 true;否则返回 false
 T newInstance(Object... initargs)
          使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。
 String toGenericString()
          返回描述此 Constructor 的字符串,其中包括类型参数。
 String toString()
          返回描述此 Constructor 的字符串。
 
从类 java.lang.reflect.AccessibleObject 继承的方法
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

方法详细信息

getDeclaringClass

public Class<T> getDeclaringClass()
返回 Class 对象,该对象表示声明由此 Constructor 对象表示的构造方法的类。

指定者:
接口 Member 中的 getDeclaringClass
返回:
表示声明底层成员的类的对象

getName

public String getName()
以字符串形式返回此构造方法的名称。它总是与构造方法的声明类的简单名称相同。

指定者:
接口 Member 中的 getName
返回:
底层成员的简单名称

getModifiers

public int getModifiers()
以整数形式返回此 Constructor 对象所表示构造方法的 Java 语言修饰符。应该使用 Modifier 类对这些修饰符进行解码。

指定者:
接口 Member 中的 getModifiers
返回:
底层成员的 Java 语言修饰符
另请参见:
Modifier

getTypeParameters

public TypeVariable<Constructor<T>>[] getTypeParameters()
按照声明顺序返回一组 TypeVariable 对象,这些对象表示通过此 GenericDeclaration 对象所表示的一般声明来声明的类型变量。如果底层一般声明未声明任何类型的变量,则返回一个长度为 0 的数组。

指定者:
接口 GenericDeclaration 中的 getTypeParameters
返回:
表示通过此一般声明来声明的类型变量的一组 TypeVariable 对象
抛出:
GenericSignatureFormatError - 如果此一般声明的一般签名不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
从以下版本开始:
1.5

getParameterTypes

public Class<?>[] getParameterTypes()
按照声明顺序返回一组 Class 对象,这些对象表示此 Constructor 对象所表示构造方法的形参类型。如果底层构造方法不带任何参数,则返回一个长度为 0 的数组。

返回:
此对象表示的构造方法的参数类型

getGenericParameterTypes

public Type[] getGenericParameterTypes()
按照声明顺序返回一组 Type 对象,这些对象表示此 Constructor 对象所表示的方法的形参类型。如果底层方法不带任何参数,则返回一个长度为 0 的数组。

如果形参类型是一个参数化类型,那么为它返回的 Type 对象必须准确地反映源代码中使用的实际类型参数。

如果形参类型是一个类型变量或者是一个参数化类型,则创建它。否则将解析它。

返回:
按照声明顺序返回一组 Type 对象,该对象表示底层方法的形参类型
抛出:
GenericSignatureFormatError - 如果这个一般方法的签名不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
TypeNotPresentException - 如果任何底层方法的参数类型引用了不存在的类型声明
MalformedParameterizedTypeException - 如果任何底层方法的参数类型引用了因某种原因而无法实例化的参数化类型
从以下版本开始:
1.5

getExceptionTypes

public Class<?>[] getExceptionTypes()
返回一组表示声明要抛出的异常类型的 Class 对象,这些异常是由此 Constructor 对象表示的底层构造方法抛出的。如果该构造方法声明其 throws 子句中没有任何异常,则返回一个长度为 0 的数组。

返回:
声明由此对象表示的构造方法抛出的异常类型

getGenericExceptionTypes

public Type[] getGenericExceptionTypes()
返回一组 Type 对象,这些对象表示声明要由此 Constructor 对象抛出的异常。如果底层方法声明其 throws 子句中没有任何异常,则返回一个长度为 0 的数组。

如果异常类型是一个参数化类型,那么为它返回的 Type 对象必须准确地反映源代码中使用的实际类型参数。

如果异常的类型是一个类型变量或是一个参数化类型,则创建它。否则将解析它。

返回:
表示底层方法抛出的异常类型的一组 Type 对象
抛出:
GenericSignatureFormatError - 如果一般方法的签名不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
TypeNotPresentException - 如果底层方法的 throws 子句引用了不存在的类型声明
MalformedParameterizedTypeException - 如果底层方法的 throws 子句引用了因某种原因而无法实例化的参数化类型
从以下版本开始:
1.5

equals

public boolean equals(Object obj)
将此 Constructor 对象与指定的对象进行比较。如果对象相同,则返回 true。如果由相同的类声明并且具有相同的形参类型,那么这两个 Constructor 对象是相同的。

覆盖:
Object 中的 equals
参数:
obj - 要与之比较的引用对象。
返回:
如果此对象与 obj 参数相同,则返回 true;否则返回 false
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此 Constructor 的哈希码。该哈希码与底层构造方法的声明类名的哈希码相同。

覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回描述此 Constructor 的字符串。该字符串是作为构造方法访问修饰符(如果有)格式化的,其后面是声明类的完全限定名,再往后是构造方法形参类型的加括号的、逗号分隔的列表。例如:
    public java.util.Hashtable(int,float)
 

构造方法唯一可能的修饰符是访问修饰符 publicprotectedprivate。这些修饰符只能出现一个,或者一个也不出现(如果构造方法具有默认(包)访问权)。

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。

toGenericString

public String toGenericString()
返回描述此 Constructor 的字符串,其中包括类型参数。该字符串是作为构造方法访问修饰符(如果有)格式化的,其后面是构造方法的类型参数(如果有)的加尖括号的、逗号分隔的列表,再往后是声明类的完全限定名,再往后是该构造方法的一般形参类型的加括号的、逗号分隔的列表。空格用来分隔访问修饰符与访问修饰符,以及访问修饰符与类型参数或返回值。如果没有类型参数,则省略类型参数列表;如果存在类型参数列表,则用空格分隔列表与类名。如果声明构造方法抛出异常,则参数列表后跟着一个空格,再往后是单词 " throws" ,再往后是用逗号分隔的所抛出异常类型的列表。

构造方法唯一可能的修饰符是访问修饰符 publicprotectedprivate。这些修饰符只能出现一个,或者一个也不出现(如果构造方法具有默认(包)访问权)。

返回:
描述此 Constructor 的字符串,其中包括类型参数
从以下版本开始:
1.5

newInstance

public T newInstance(Object... initargs)
              throws InstantiationException,
                     IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。个别参数会自动解包,以匹配基本形参,必要时,基本参数和引用参数都要进行方法调用转换。

如果底层构造方法所需形参数为 0,则所提供的 initargs 数组的长度可能为 0 或 null。

如果构造方法的声明类是非静态上下文的内部类,则构造方法的第一个参数需要是封闭实例;请参阅Java 语言规范 第 15.9.3 节。

如果所需的访问检查和参数检查获得成功并且实例化继续进行,这时构造方法的声明类尚未初始化,则初始化这个类。

如果构造方法正常完成,则返回新创建且已初始化的实例。

参数:
initargs - 将作为变量传递给构造方法调用的对象数组;基本类型的值被包装在适当类型的包装器对象(如 Float 中的 float)中。
返回:
通过调用此对象表示的构造方法来创建的新对象
抛出:
IllegalAccessException - 如果此 Constructor 对象实施 Java 语言访问控制并且底层构造方法是不可访问的。
IllegalArgumentException - 如果实参和形参的数量不同;如果基本参数的解包转换失败;如果在可能的解包后,无法通过方法调用转换将参数值转换为相应的形参类型;如果此构造方法属于枚举类型。
InstantiationException - 如果声明底层构造方法的类表示抽象类。
InvocationTargetException - 如果底层构造方法抛出异常。
ExceptionInInitializerError - 如果此方法引发的初始化失败。

isVarArgs

public boolean isVarArgs()
如果声明此构造方法可以带可变数量的参数,则返回 true;否则返回 false

返回:
当且仅当声明此构造方法可以带可变数量的参数时才返回 true
从以下版本开始:
1.5

isSynthetic

public boolean isSynthetic()
如果此构造方法是一个复合构造方法,则返回 true;否则返回 false

指定者:
接口 Member 中的 isSynthetic
返回:
当且仅当此构造方法是按照 Java Language Specification 定义的复合构造方法时才返回 true。
从以下版本开始:
1.5

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
从接口 AnnotatedElement 复制的描述
如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。

指定者:
接口 AnnotatedElement 中的 getAnnotation
覆盖:
AccessibleObject 中的 getAnnotation
参数:
annotationClass - 对应于注释类型的 Class 对象
返回:
如果该元素的指定注释类型的注释存在于此对象上,则返回这些注释,否则返回 null
抛出:
NullPointerException - 如果给定的注释类为 null
从以下版本开始:
1.5

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
从接口 AnnotatedElement 复制的描述
返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。

指定者:
接口 AnnotatedElement 中的 getDeclaredAnnotations
覆盖:
AccessibleObject 中的 getDeclaredAnnotations
返回:
直接存在于此元素上的所有注释
从以下版本开始:
1.5

getParameterAnnotations

public Annotation[][] getParameterAnnotations()
按照声明顺序返回一组数组,这些数组表示通过此 Constructor 对象表示的方法的形参上的注释。(如果底层方法没有参数,则返回一个长度为零的数组。如果该方法有一个或多个参数,则为每个不带注释的参数返回一个长度为零的嵌套数组。)包含在返回数组中的注释对象是可序列化的。此方法的调用者可以自由地修改返回的数组;它对返回给其他调用者的数组没有影响。

返回:
按照声明顺序返回的一组数组,这些数组表示此 Constructor 对象表示的方法的形参上的注释
从以下版本开始:
1.5