模块  java.base
软件包  java.lang.reflect

Class Method

    • 方法详细信息

      • setAccessible

        public void setAccessible​(boolean flag)
        从类中复制的说明: AccessibleObject
        将此反射对象的accessible标志设置为指示的布尔值。 true表示反射对象在使用时应禁止检查Java语言访问控制。 false表示反射对象在使用时应强制检查Java语言访问控制,并在类描述中注明变体。

        该方法可以通过一个呼叫方在类中使用C以使得能够访问一个memberdeclaring class D如果任何下列条件成立:

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

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

        如果有安全管理器,则首先使用ReflectPermission("suppressAccessChecks")权限调用其checkPermission方法。

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

        public <?> getDeclaringClass()
        返回表示声明此对象表示的方法的类或接口的 对象。
        Specified by:
        getDeclaringClass接口 Member
        Specified by:
        getDeclaringClassExecutable
        结果
        表示底层成员的声明类的对象
      • getName

        public String getName()
        返回此 方法对象表示的方法的名称,如 String
        Specified by:
        getName ,界面 Member
        Specified by:
        getName在类 Executable
        结果
        底层成员的简单名称
      • getTypeParameters

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

        public <?> getReturnType()
        返回 对象,该对象表示此 方法对象表示的方法的正式返回类型。
        结果
        此对象表示的方法的返回类型
      • getGenericReturnType

        public Type getGenericReturnType()
        返回一个Type对象,该对象表示此方法对象表示的方法的正式返回类型。

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

        如果返回类型是类型变量或参数化类型,则会创建它。 否则,它就解决了。

        结果
        一个 Type对象,表示底层方法的正式返回类型
        异常
        GenericSignatureFormatError - 如果通用方法签名不符合 The Java™ Virtual Machine Specification中指定的格式
        TypeNotPresentException - 如果基础方法的返回类型引用了不存在的类型声明
        MalformedParameterizedTypeException - 如果基础方法的返回类型引用了无法因任何原因而无法实例化的参数化类型
        从以下版本开始:
        1.5
      • getParameterCount

        public int getParameterCount()
        返回此对象表示的可执行文件的形式参数(无论是显式声明还是隐式声明,或两者都不)。
        重写:
        getParameterCountExecutable
        结果
        此对象表示的可执行文件的形式参数的数量
        从以下版本开始:
        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的数组。

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

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

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

        public String toString()
        返回描述此方法的字符串。 该字符串被格式化为方法访问修饰符(如果有),后跟方法返回类型,后跟空格,后跟声明方法的类,后跟句点,后跟方法名称,后跟括号,逗号 - 方法的形式参数类型的分离列表。 如果方法抛出已检查的异常,则参数列表后跟一个空格,后跟单词“ throws ”,后跟逗号分隔的抛出异常类型列表。 例如:
          public boolean java.lang.Object.equals(java.lang.Object) 

        访问修饰符按照“Java语言规范”指定的规范顺序放置。 这是publicprotectedprivate以下顺序,然后再其它改性剂: abstractdefaultstaticfinalsynchronizednativestrictfp

        重写:
        toString类别 Object
        结果
        描述这个 方法的字符串
        See The Java™ Language Specification:
        8.4.3方法修饰符,9.4方法声明,9.6.1注释类型元素
      • toGenericString

        public String toGenericString()
        返回描述此方法的字符串,包括类型参数。 该字符串被格式化为方法访问修饰符(如果有),后跟方法的类型参数的角度括号的逗号分隔列表(如果有),后跟方法的泛型返回类型,后跟空格,后跟类声明方法,后跟一个句点,后跟方法名称,后跟一个带括号的逗号分隔的方法的通用形式参数类型列表。 如果声明此方法采用可变数量的参数,而不是将最后一个参数表示为“ Type[] ”,则将其表示为“ Type... ”。 空格用于将访问修饰符彼此分开,并与类型参数或返回类型分开。 如果没有类型参数,则省略类型参数列表; 如果存在类型参数列表,则空格将列表与类名分开。 如果声明方法抛出异常,则参数列表后跟一个空格,后跟单词“ throws ”,后跟逗号分隔的泛型异常类型列表。

        访问修饰符按照“Java语言规范”指定的规范顺序放置。 这是publicprotectedprivate以下顺序,然后再其它改性剂: abstractdefaultstaticfinalsynchronizednativestrictfp

        Specified by:
        toGenericStringExecutable
        结果
        描述此 方法的字符串,包括类型参数
        从以下版本开始:
        1.5
        See The Java™ Language Specification:
        8.4.3方法修饰符,9.4方法声明,9.6.1注释类型元素
      • invoke

        public Object invoke​(Object obj,                     Object... args)              throws IllegalAccessException,                     IllegalArgumentException,                     InvocationTargetException
        在具有指定参数的指定对象上调用此方法对象表示的基础方法。 各个参数自动展开以匹配原始形式参数,并且原始参数和参考参数都根据需要进行方法调用转换。

        如果基础方法是静态的,则忽略指定的obj参数。 它可能为空。

        如果基础方法所需的形式参数的数量为0,则提供的args数组的长度可以为0或null。

        如果底层方法是实例方法,则使用动态方法查找调用它,如Java语言规范第15.12.4.4节中所述; 特别地,可能发生基于目标对象的运行时类型的覆盖。

        如果底层方法是静态的,则声明该方法的类如果尚未初始化则初始化。

        如果方法正常完成,则返回的值返回给invoke的调用者; 如果值具有基本类型,则首先将其适当地包装在对象中。 但是,如果值具有基本类型数组的类型,则数组的元素不会包装在对象中; 换句话说,返回一个原始类型的数组。 如果底层方法返回类型为void,则调用返回null。

        参数
        obj - 从中调用基础方法的对象
        args - 用于方法调用的参数
        结果
        调度此对象表示的方法的结果在 obj ,参数为 args
        异常
        IllegalAccessException - 如果此 方法对象正在强制执行Java语言访问控制且基础方法不可访问。
        IllegalArgumentException - 如果方法是实例方法,并且指定的对象参数不是声明基础方法(或其子类或实现者)的类或接口的实例; 如果实际和形式参数的数量不同; 如果原始参数的展开转换失败; 或者,如果在可能的解包之后,参数值不能通过方法调用转换转换为相应的形式参数类型。
        InvocationTargetException - 如果基础方法抛出异常。
        NullPointerException - 如果指定的对象为null且方法是实例方法。
        ExceptionInInitializerError - 如果此方法引发的初始化失败。
      • isBridge

        public boolean isBridge()
        如果此方法是桥接方法,则返回true ; 否则返回false
        结果
        当且仅当此方法是Java语言规范定义的桥接方法时才返回true。
        从以下版本开始:
        1.5
      • 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二进制形式
      • isDefault

        public boolean isDefault()
        如果此方法是默认方法,则返回true ; 否则返回false 默认方法是公共非抽象实例方法,即具有主体的非静态方法,在接口类型中声明。
        结果
        当且仅当此方法是Java语言规范定义的默认方法时才返回true。
        从以下版本开始:
        1.8
      • getDefaultValue

        public Object getDefaultValue()
        返回此方法实例表示的注释成员的默认值。 如果成员是基本类型,则返回相应包装类型的实例。 如果没有与成员关联的默认值,或者方法实例不表示注释类型的声明成员,则返回null。
        结果
        方法实例表示的注释成员的默认值。
        异常
        TypeNotPresentException - 如果注释的类型为并且找不到默认类值的定义。
        从以下版本开始:
        1.5
      • 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 s的数组数组,这些数组表示此对象所表示的Executable声明顺序的形式参数的注释。 合成和强制参数(请参阅下面的说明),例如内部类构造函数的外部“this”参数将在返回的数组中表示。 如果可执行文件没有参数(意味着没有正式参数,没有合成参数,也没有强制参数),则返回零长度数组。 如果Executable具有一个或多个参数,则为没有注释的每个参数返回长度为零的嵌套数组。 返回的数组中包含的注释对象是可序列化的。 此方法的调用者可以自由修改返回的数组; 它对返回给其他调用者的数组没有影响。 编译器可以添加在源(“强制”)中隐式声明的额外参数,以及既不在源(“合成”)中隐式或显式声明到方法的参数列表的参数。 有关更多信息,请参见Parameter
        Specified by:
        getParameterAnnotations在类 Executable
        结果
        一个数组数组,以声明顺序表示此对象表示的可执行文件的形式和隐式参数的注释
        从以下版本开始:
        1.5
        另请参见:
        ParameterAnnotatedElement.getAnnotations()
      • getAnnotatedReturnType

        public AnnotatedType getAnnotatedReturnType()
        返回一个AnnotatedType对象,该对象表示使用类型来指定此可执行文件所表示的方法/构造函数的返回类型。 如果此Executable对象表示构造函数,则AnnotatedType对象表示构造对象的类型。 如果此Executable对象表示方法,则AnnotatedType对象表示使用类型来指定方法的返回类型。
        Specified by:
        getAnnotatedReturnTypeExecutable
        结果
        表示此 Executable表示的方法或构造函数的返回类型的对象
        从以下版本开始:
        1.8