java.lang.Object java.lang.reflect.AccessibleObject java.lang.reflect.Constructor<T>
T
- 在其中声明构造方法的类。
public final class Constructor<T>
Constructor
提供关于类的单个构造方法的信息以及对它的访问权限。
Constructor
允许在将实参与带有底层构造方法的形参的 newInstance() 匹配时进行扩展转换,但是如果发生收缩转换,则抛出 IllegalArgumentException
。
Member
,
Class
,
Class.getConstructors()
,
Class.getConstructor(Class[])
,
Class.getDeclaredConstructors()
字段摘要 |
---|
从接口 java.lang.reflect.Member 继承的字段 |
---|
DECLARED, PUBLIC |
方法摘要 | ||
---|---|---|
boolean |
equals(Object obj) 将此 Constructor 对象与指定的对象进行比较。 |
|
|
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 |
方法详细信息 |
---|
public Class<T> getDeclaringClass()
Class
对象,该对象表示声明由此
Constructor
对象表示的构造方法的类。
Member
中的
getDeclaringClass
public String getName()
public int getModifiers()
Constructor
对象所表示构造方法的 Java 语言修饰符。应该使用
Modifier
类对这些修饰符进行解码。
Member
中的
getModifiers
Modifier
public TypeVariable<Constructor<T>>[] getTypeParameters()
GenericDeclaration
中的
getTypeParameters
GenericSignatureFormatError
- 如果此一般声明的一般签名不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
public Class<?>[] getParameterTypes()
Class
对象,这些对象表示此
Constructor
对象所表示构造方法的形参类型。如果底层构造方法不带任何参数,则返回一个长度为 0 的数组。
public Type[] getGenericParameterTypes()
如果形参类型是一个参数化类型,那么为它返回的 Type 对象必须准确地反映源代码中使用的实际类型参数。
如果形参类型是一个类型变量或者是一个参数化类型,则创建它。否则将解析它。
GenericSignatureFormatError
- 如果这个一般方法的签名不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
TypeNotPresentException
- 如果任何底层方法的参数类型引用了不存在的类型声明
MalformedParameterizedTypeException
- 如果任何底层方法的参数类型引用了因某种原因而无法实例化的参数化类型
public Class<?>[] getExceptionTypes()
Class
对象,这些异常是由此
Constructor
对象表示的底层构造方法抛出的。如果该构造方法声明其
throws
子句中没有任何异常,则返回一个长度为 0 的数组。
public Type[] getGenericExceptionTypes()
如果异常类型是一个参数化类型,那么为它返回的 Type 对象必须准确地反映源代码中使用的实际类型参数。
如果异常的类型是一个类型变量或是一个参数化类型,则创建它。否则将解析它。
GenericSignatureFormatError
- 如果一般方法的签名不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
TypeNotPresentException
- 如果底层方法的
throws 子句引用了不存在的类型声明
MalformedParameterizedTypeException
- 如果底层方法的
throws 子句引用了因某种原因而无法实例化的参数化类型
public boolean equals(Object obj)
Constructor
对象与指定的对象进行比较。如果对象相同,则返回 true。如果由相同的类声明并且具有相同的形参类型,那么这两个
Constructor
对象是相同的。
obj
- 要与之比较的引用对象。
true
;否则返回
false
。
Object.hashCode()
,
Hashtable
public int hashCode()
Constructor
的哈希码。该哈希码与底层构造方法的声明类名的哈希码相同。
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
Constructor
的字符串。该字符串是作为构造方法访问修饰符(如果有)格式化的,其后面是声明类的完全限定名,再往后是构造方法形参类型的加括号的、逗号分隔的列表。例如:
public java.util.Hashtable(int,float)
构造方法唯一可能的修饰符是访问修饰符 public、protected 或 private。这些修饰符只能出现一个,或者一个也不出现(如果构造方法具有默认(包)访问权)。
public String toGenericString()
Constructor
的字符串,其中包括类型参数。该字符串是作为构造方法访问修饰符(如果有)格式化的,其后面是构造方法的类型参数(如果有)的加尖括号的、逗号分隔的列表,再往后是声明类的完全限定名,再往后是该构造方法的一般形参类型的加括号的、逗号分隔的列表。空格用来分隔访问修饰符与访问修饰符,以及访问修饰符与类型参数或返回值。如果没有类型参数,则省略类型参数列表;如果存在类型参数列表,则用空格分隔列表与类名。如果声明构造方法抛出异常,则参数列表后跟着一个空格,再往后是单词 "
throws" ,再往后是用逗号分隔的所抛出异常类型的列表。
构造方法唯一可能的修饰符是访问修饰符 public、protected 或 private。这些修饰符只能出现一个,或者一个也不出现(如果构造方法具有默认(包)访问权)。
Constructor
的字符串,其中包括类型参数
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
- 如果此方法引发的初始化失败。
public boolean isVarArgs()
public boolean isSynthetic()
Member
中的
isSynthetic
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
AnnotatedElement
复制的描述
AnnotatedElement
中的
getAnnotation
AccessibleObject
中的
getAnnotation
annotationClass
- 对应于注释类型的 Class 对象
NullPointerException
- 如果给定的注释类为 null
public Annotation[] getDeclaredAnnotations()
AnnotatedElement
复制的描述
AnnotatedElement
中的
getDeclaredAnnotations
AccessibleObject
中的
getDeclaredAnnotations
public Annotation[][] getParameterAnnotations()