Module  java.base
软件包  java.lang.reflect

Class Constructor<T>

    • 方法详细信息

      • setAccessible

        public void setAccessible​(boolean flag)
        将此反射对象的accessible标志设置为指示的布尔值。 值为true表示反射对象应该在使用Java语言访问控制时抑制检查。 值为false表示反射对象应该在使用Java语言访问控制时执行检查,并在类描述中指出变体。

        呼叫者可以在C类中使用此方法,以使得能够访问declaring class declaring class D如果有以下任何一项):

        • CD在相同的模块中。
        • 所述构件是publicDpublic在于包含模块的封装D exports到至少包含模块C
        • 所述构件是protected staticDpublic在于包含模块的封装D出口到至少包含模块C ,和C是的一个子类D
        • D是在一个包中,模块至少包含D opens ,模块包含C 未命名和开放模块中的所有软件包均可对所有模块开放,因此当D处于未命名或打开模块时,此方法始终会成功。

        当声明类与调用者不同的模块时,此方法不能用于启用对私有成员,具有默认(包)访问权限的成员,受保护的实例成员或受保护的构造函数的访问,并且包含声明类的包不能打开呼叫者的模块。

        如果有一个安全管理员,它的checkPermission方法首先被调用一个ReflectPermission("suppressAccessChecks")权限。

        一个SecurityException如果这个对象是也抛出Constructor对象类Classflag是真的。

        重写:
        setAccessibleAccessibleObject
        参数
        flag - 新值为 accessible旗帜
        异常
        InaccessibleObjectException - 如果无法启用访问
        SecurityException - 如果请求被安全管理器拒绝,或者是 java.lang.Class的构造 java.lang.Class
        另请参见:
        AccessibleObject.trySetAccessible()MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)
      • getDeclaringClass

        public Class<T> getDeclaringClass​()
        返回表示声明由该对象表示的构造函数的类的 Class对象。
        Specified by:
        getDeclaringClass在接口 Member
        Specified by:
        getDeclaringClassExecutable
        结果
        一个表示底层成员声明类的对象
      • getName

        public String getName​()
        以字符串形式返回此构造函数的名称。 这是构造函数的声明类的二进制名称。
        Specified by:
        getName在接口 Member
        Specified by:
        getNameExecutable
        结果
        底层成员的简单名称
      • getTypeParameters

        public TypeVariable<Constructor<T>>[] getTypeParameters​()
        返回的数组TypeVariable对象表示通过此表示的一般声明声明的类型变量GenericDeclaration目的,在声明的顺序。 如果底层通用声明不声明类型变量,则返回长度为0的数组。
        Specified by:
        getTypeParameters在接口 GenericDeclaration
        Specified by:
        getTypeParametersExecutable
        结果
        一个 TypeVariable对象的数组,表示由此通用声明声明的类型变量
        异常
        GenericSignatureFormatError - 如果此通用声明的通用签名不符合 The Java™ Virtual Machine Specification中规定的格式
        从以下版本开始:
        1.5
      • getParameterTypes

        public Class<?>[] getParameterTypes​()
        返回一个Class对象的数组, Class以声明顺序表示由该对象表示的可执行文件的形式参数类型。 如果底层可执行文件没有参数,则返回长度为0的数组。
        Specified by:
        getParameterTypesExecutable
        结果
        该对象表示的可执行文件的参数类型
      • getParameterCount

        public int getParameterCount​()
        返回由此对象表示的可执行文件的形式参数(无论是显式声明还是隐式声明)的数量。
        重写:
        getParameterCountExecutable
        结果
        该对象表示的可执行文件的形式参数的数量
        从以下版本开始:
        1.8
      • getGenericParameterTypes

        public Type[] getGenericParameterTypes​()
        返回一个Type对象的数组, Type以声明顺序表示由该对象表示的可执行文件的形式参数类型。 如果底层可执行文件没有参数,则返回长度为0的数组。

        如果形式参数类型是参数化类型,则Type返回的Type对象必须准确反映源代码中使用的实际类型参数。

        如果形式参数类型是类型变量或参数化类型,则会创建它。 否则解决。

        重写:
        getGenericParameterTypesExecutable
        结果
        一个 Type的数组,以声明顺序表示底层可执行文件的形式参数类型
        异常
        GenericSignatureFormatError - 如果通用方法签名不符合 The Java™ Virtual Machine Specification中指定的格式
        TypeNotPresentException - 如果底层可执行文件的任何参数类型是指不存在的类型声明
        MalformedParameterizedTypeException - 如果任何底层可执行文件的参数类型是指由于任何原因无法实例化的参数化类型
        从以下版本开始:
        1.5
      • getExceptionTypes

        public Class<?>[] getExceptionTypes​()
        返回一个Class对象的数组,表示由该对象表示的底层可执行文件所声明的异常类型。 如果可执行文件在其throws子句中不声明异常,则返回长度为0的数组。
        Specified by:
        getExceptionTypesExecutable
        结果
        被该对象表示的可执行文件抛出的异常类型
      • getGenericExceptionTypes

        public Type[] getGenericExceptionTypes​()
        返回一个Type对象的数组,它们表示声明为该可执行对象抛出的异常。 如果底层可执行文件在其throws子句中声明无例外,则返回长度为0的数组。

        如果异常类型是类型变量或参数化类型,则会创建它。 否则解决。

        重写:
        getGenericExceptionTypesExecutable
        结果
        一组数组,表示底层可执行文件抛出的异常类型
        异常
        GenericSignatureFormatError - 如果通用方法签名不符合 The Java™ Virtual Machine Specification中指定的格式
        TypeNotPresentException - 如果底层可执行文件的 throws子句引用不存在的类型声明
        MalformedParameterizedTypeException - 如果底层可执行文件的 throws子句是指由于任何原因无法实例化的参数化类型
        从以下版本开始:
        1.5
      • equals

        public boolean equals​(Object obj)
        将此Constructor与指定对象进行比较。 如果对象相同,则返回true。 两个Constructor对象是相同的,如果它们被同一个类声明并具有相同的形式参数类型。
        重写:
        equals在类 Object
        参数
        obj - 与之比较的参考对象。
        结果
        true如果此对象与obj参数相同; 否则为false
        另请参见:
        Object.hashCode()HashMap
      • toString

        public String toString​()
        返回描述这个Constructor的字符串。 该字符串格式化为构造函数访问修饰符(如果有),后跟声明类的完全限定名称,后跟括号,逗号分隔的构造函数形式参数类型列表。 例如:
           public java.util.Hashtable(int,float)  

        如果构造函数被声明为抛出异常,则参数列表后跟一个空格,后面跟有“ throws ”一词,后面是抛出的异常类型的逗号分隔列表。

        对构造方法唯一可能的修饰符是访问修饰符publicprotected或者private 只有其中一个可能出现,或者如果构造函数具有默认(包)访问权限,则不会显示。

        重写:
        toStringObject
        结果
        一个描述这个 Constructor的字符串
        See The Java™ Language Specification:
        8.8.3构造函数修饰符,8.9.2枚举体声明
      • toGenericString

        public String toGenericString​()
        返回描述此Constructor的字符串,包括类型参数。 该字符串格式化为构造函数访问修饰符(如果有),后跟一个由括号括起的逗号分隔的构造函数类型参数列表(如果有),后跟声明类的完全限定名称,后跟括号,构造函数的通用形式参数类型的分隔列表。 如果这个构造函数被声明为可变数量的参数,而不是将最后一个参数表示为“ Type[] ”,则表示为“ Type... ”。 一个空格用于将访问修饰符彼此和类型参数或类名分开。 如果没有类型参数,则类型参数列表将被删除; 如果存在类型参数列表,则将列表与类名称隔开。 如果构造函数被声明为抛出异常,则参数列表后跟一个空格,后跟“ throws ”,后跟通用抛出的异常类型的逗号分隔列表。

        对构造方法唯一可能的修饰符是访问修饰符publicprotected或者private 只有其中一个可能出现,或者如果构造函数具有默认(包)访问权限,则不会显示。

        Specified by:
        toGenericStringExecutable
        结果
        一个描述这个 Constructor的字符串,包括类型参数
        从以下版本开始:
        1.5
        See The Java™ Language Specification:
        8.8.3构造函数修饰符,8.9.2枚举体声明
      • newInstance

        public T newInstance​(Object... initargs)
                      throws InstantiationException,
                             IllegalAccessException,
                             IllegalArgumentException,
                             InvocationTargetException
        使用由此Constructor对象表示的构造函数,使用指定的初始化参数创建和初始化构造函数的声明类的新实例。 个别参数自动展开以匹配原始形式参数,原始参考参数和参考参数都需要进行方法调用转换。

        如果底层构造函数所需的形式参数的数量为0,则提供的initargs数组的长度为0或为空。

        如果构造函数的声明类是非静态上下文中的内部类,则构造函数的第一个参数需要是封闭实例; The Java™ Language Specification的第15.9.3

        如果所需的访问和参数检查成功,并且实例化将继续进行,那么构造函数的声明类如果尚未被初始化,则将被初始化。

        如果构造函数正常完成,则返回新创建和初始化的实例。

        参数
        initargs - 要作为构造函数调用的参数传递的对象的数组; 原始类型的值被包装在适当类型的包装对象中(例如, float中的float
        结果
        通过调用此对象代表的构造函数创建的新对象
        异常
        IllegalAccessException - 如果此 Constructor对象正在执行Java语言访问控制,并且底层构造函数无法访问。
        IllegalArgumentException - 如果实际和正式参数的数量不同; 如果原始参数的解包转换失败; 或者如果在可能的展开之后,通过方法调用转换,参数值不能转换为相应的形式参数类型; 如果此构造函数属于枚举类型。
        InstantiationException - 如果声明底层构造函数的类表示抽象类。
        InvocationTargetException - 如果底层构造函数引发异常。
        ExceptionInInitializerError - 如果由此方法引发的初始化失败。
      • isVarArgs

        public boolean isVarArgs​()
        如果这个可执行文件被声明为采用可变数量的参数,则返回true ; 否则返回false
        重写:
        isVarArgsExecutable
        结果
        true如果只有这个可执行文件被声明为一个可变数量的参数。
        从以下版本开始:
        1.5
      • isSynthetic

        public boolean isSynthetic​()
        如果这个可执行文件是一个合成的结构,返回true ; 否则返回false
        Specified by:
        isSynthetic在接口 Member
        重写:
        isSyntheticExecutable
        结果
        如果且仅当此可执行文件是由 The Java™ Language Specification定义的合成结构, 则为true
        从以下版本开始:
        1.5
        See The Java™ Language Specification:
        13.1二进制形式
      • getAnnotation

        public <T extends Annotation> T getAnnotation​(Class<T> annotationClass)
        返回该元素的,如果这样的注释 否则返回null指定类型的注释。
        Specified by:
        getAnnotation在接口 AnnotatedElement
        重写:
        getAnnotationExecutable
        参数类型
        T - 要查询的注释类型,如果存在则返回
        参数
        annotationClass - 对应于注释类型的Class对象
        结果
        该元素的注释指定的注释类型,如果存在于此元素,否则为null
        异常
        NullPointerException - 如果给定的注释类为空
        从以下版本开始:
        1.5
      • getDeclaredAnnotations

        public Annotation[] getDeclaredAnnotations​()
        返回直接存在于此元素上的注释。 此方法忽略继承的注释。 如果此元素上没有直接显示的注释,则返回值为长度为0的数组。此方法的调用者可以自由修改返回的数组; 它将对返回给其他调用者的数组没有影响。
        Specified by:
        getDeclaredAnnotations在接口 AnnotatedElement
        重写:
        getDeclaredAnnotationsExecutable
        结果
        此元素上直接显示的注释
        从以下版本开始:
        1.5
      • getParameterAnnotations

        public Annotation[][] getParameterAnnotations​()
        返回一个Annotation s的数组数组,表示由该对象表示的Executable的形式参数的声明顺序。 合成和强制参数(见下面的说明),如内部类构造函数的外部“this”参数将在返回的数组中表示。 如果可执行文件没有参数(意思是没有正式的,没有合成的,没有强制的参数),那么将返回一个零长度的数组。 如果Executable具有一个或多个参数,则对于没有注释的每个参数,返回长度为零的嵌套数组。 包含在返回的数组中的注释对象是可序列化的。 该方法的调用者可以自由修改返回的数组; 它将对返回给其他调用者的数组没有影响。 编译器可以添加在源(“强制”)中隐式声明的额外参数,以及在源(“合成”)中既不是隐式也不显式声明方法的参数列表的参数。 详见Parameter
        Specified by:
        getParameterAnnotationsExecutable
        结果
        表示由该对象表示的可执行文件的声明顺序的形式和隐式参数上的注释数组
        从以下版本开始:
        1.5
        另请参见:
        ParameterParameter.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。
        重写:
        getAnnotatedReceiverTypeExecutable
        结果
        表示由该 Executablenull表示的方法或构造函数的接收器类型的对象,如果该 Executable不能具有接收器参数
        从以下版本开始:
        1.8