java.lang.Object
java.lang.reflect.AccessibleObject
java.lang.reflect.Executable
- 所有已实现的接口:
-
AnnotatedElement
,GenericDeclaration
,Member
- 直接已知的子类:
-
Constructor
,Method
public abstract sealed class Executable extends AccessibleObject implements Member, GenericDeclaration permits Constructor<T>, Method
一个共享的超类,用于
Method
和Constructor
的通用功能。
- 自Java版本:
- 1.8
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescription返回此对象所代表的可执行对象的不可修改的access flags
集合,可能为空。返回一个AnnotatedType
对象数组,表示此Executable
所代表的方法/构造函数声明的异常类型的使用。返回一个AnnotatedType
对象数组,表示此Executable
所代表的方法/构造函数声明的形式参数类型的使用。返回一个AnnotatedType
对象,表示此Executable
对象所代表的方法/构造函数的接收者类型的使用。abstract AnnotatedType
返回一个AnnotatedType
对象,表示此Executable
所代表的方法/构造函数的返回类型的使用。<T extends Annotation>
TgetAnnotation
(Class<T> annotationClass) 如果存在此类型的注解,则返回指定类型的此元素的注解,否则返回null。<T extends Annotation>
T[]getAnnotationsByType
(Class<T> annotationClass) 返回与此元素关联的注解。返回直接存在于此元素上的注解。abstract Class
<?> 返回代表声明此对象所代表的可执行对象的类或接口的Class
对象。abstract Class<?>[]
返回一个Class
对象数组,表示此对象所代表的底层可执行对象声明要抛出的异常类型。Type[]
返回一个Type
对象数组,表示此可执行对象声明要抛出的异常。Type[]
返回一个Type
对象数组,表示此对象所代表的可执行对象的声明顺序的形式参数类型。abstract int
返回此对象所代表的可执行对象的Java语言modifiers
。abstract String
getName()
返回此对象所代表的可执行对象的名称。abstract Annotation[][]
返回一个Executable
对象上的形式参数的注解数组的数组,按声明顺序。abstract int
返回此对象所代表的可执行对象的形式参数的数量(无论是显式声明的、隐式声明的还是两者都不是)。返回表示此对象所代表的底层可执行对象的所有参数的Parameter
对象数组。abstract Class<?>[]
返回一个Class
对象数组,表示此对象所代表的可执行对象的声明顺序的形式参数类型。abstract TypeVariable<?>[]
返回一个TypeVariable
对象数组,表示此GenericDeclaration
对象声明的泛型声明的类型变量,按声明顺序。boolean
如果此可执行对象是合成构造,则返回true
;否则返回false
。boolean
如果此可执行对象声明要接受可变数量的参数,则返回true
;否则返回false
。abstract String
返回描述此Executable
的字符串,包括任何类型参数。Methods declared in class java.lang.reflect.AccessibleObject
canAccess, getAnnotations, getDeclaredAnnotation, getDeclaredAnnotations, getDeclaredAnnotationsByType, isAccessible, isAnnotationPresent, setAccessible, setAccessible, trySetAccessible
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface java.lang.reflect.AnnotatedElement
getAnnotations, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent
-
Method Details
-
getDeclaringClass
返回代表声明此对象所代表的可执行对象的类或接口的Class
对象。- 指定者:
-
getDeclaringClass
在接口Member
中 - 返回:
- 表示底层成员的声明类的对象
-
getName
返回此对象所代表的可执行对象的名称。 -
getModifiers
public abstract int getModifiers()返回此对象所代表的可执行对象的Java语言modifiers
。- 指定者:
-
getModifiers
在接口Member
中 - 返回:
-
此对象所代表的可执行对象的Java语言
modifiers
- 参见:
-
accessFlags
返回此对象所代表的可执行对象的不可修改的access flags
集合,可能为空。- 指定者:
-
accessFlags
在接口Member
中 - 返回:
-
此对象所代表的可执行对象的不可修改的
access flags
集合,可能为空 - 参见Java虚拟机规范:
-
4.6 Methods
- 自Java版本:
- 20
- 参见:
-
getTypeParameters
返回一个TypeVariable
对象数组,表示此GenericDeclaration
对象声明的泛型声明的类型变量,按声明顺序。如果底层泛型声明未声明任何类型变量,则返回长度为0的数组。- 指定者:
-
getTypeParameters
在接口GenericDeclaration
中 - 返回:
-
一个
TypeVariable
对象数组,表示此泛型声明声明的类型变量 - 抛出:
-
GenericSignatureFormatError
- 如果此泛型声明的泛型签名不符合Java虚拟机规范中指定的格式
-
getParameterTypes
返回一个Class
对象数组,表示此对象所代表的可执行对象的声明顺序的形式参数类型。如果底层可执行对象不接受参数,则返回长度为0的数组。请注意,一些内部类的构造函数可能除了显式声明的参数外还有一个隐式声明的参数。- 返回:
- 此对象所代表的可执行对象的参数类型
-
getParameterCount
public abstract int getParameterCount()返回此对象所代表的可执行对象的形式参数的数量(无论是显式声明的、隐式声明的还是两者都不是)。- 返回:
- 此对象所代表的可执行对象的形式参数的数量
-
getGenericParameterTypes
返回一个Type
对象数组,表示此对象所代表的可执行对象的声明顺序的形式参数类型。如果底层可执行对象不接受参数,则返回长度为0的数组。请注意,一些内部类的构造函数可能除了显式声明的参数外还有一个隐式声明的参数。另请注意,作为一个建模工件,返回的参数数量可能会因是否存在泛型信息而有所不同。如果存在泛型信息,则只返回源代码中显式存在的参数;如果不存在泛型信息,则可能还会返回隐式和合成参数。如果形式参数类型是参数化类型,则返回的
Type
对象必须准确反映源代码中使用的实际类型参数。如果形式参数类型是类型变量或参数化类型,则会创建它。否则,它会被解析。
- 返回:
-
一个表示底层可执行对象的形式参数类型的
Type
数组,按声明顺序 - 抛出:
-
GenericSignatureFormatError
- 如果泛型方法签名不符合Java虚拟机规范中指定的格式 -
TypeNotPresentException
- 如果底层可执行对象的任何参数类型引用不存在的类型声明 -
MalformedParameterizedTypeException
- 如果底层可执行对象的参数类型引用由于任何原因无法实例化的参数化类型
-
getParameters
返回一个表示此对象所代表的基础可执行对象的所有参数的Parameter
对象数组。如果可执行对象没有参数,则返回长度为0的数组。基础可执行对象的参数不一定具有唯一的名称,或者在Java编程语言(JLS 3.8)中是合法标识符的名称。
- 返回:
-
表示此对象所代表的基础可执行对象的所有参数的
Parameter
对象数组 - 抛出:
-
MalformedParametersException
- 如果类文件包含格式不正确的MethodParameters属性。
-
getExceptionTypes
返回一个表示此对象所代表的基础可执行对象声明要抛出的异常类型的Class
对象数组。如果可执行对象在其throws
子句中没有声明异常,则返回长度为0的数组。- 返回:
- 表示此对象所代表的基础可执行对象声明要抛出的异常类型的数组
-
getGenericExceptionTypes
返回一个表示此可执行对象声明要抛出的异常的Type
对象数组。如果基础可执行对象在其throws
子句中没有声明异常,则返回长度为0的数组。如果异常类型是类型变量或参数化类型,则会被创建。否则,它会被解析。
- 返回:
- 表示基础可执行对象抛出的异常类型的Types数组
- 抛出:
-
GenericSignatureFormatError
- 如果通用方法签名不符合Java虚拟机规范中指定的格式 -
TypeNotPresentException
- 如果基础可执行对象的throws
子句引用了不存在的类型声明 -
MalformedParameterizedTypeException
- 如果基础可执行对象的throws
子句引用了由于任何原因都无法实例化的参数化类型
-
toGenericString
返回描述此Executable
的字符串,包括任何类型参数。- 返回:
-
描述此
Executable
,包括任何类型参数的字符串
-
isVarArgs
public boolean isVarArgs()如果此可执行对象声明接受可变数量的参数,则返回true
;否则返回false
。- 返回:
-
如果此可执行对象声明接受可变数量的参数,则返回
true
;否则返回false
-
isSynthetic
public boolean isSynthetic()如果此可执行对象是合成构造,则返回true
;否则返回false
。- 指定者:
-
isSynthetic
在接口Member
中 - 返回:
- 如果此可执行对象是根据Java语言规范定义的合成构造,则返回true。
- 查看Java语言规范:
-
13.1 二进制形式
- 查看Java虚拟机规范:
-
4.6 方法
-
getParameterAnnotations
返回一个表示此对象所代表的Executable
的形式参数上的注解的Annotation
数组的数组,按声明顺序排列。将在返回的数组中表示合成和强制参数(请参见下面的解释),例如内部类构造函数的外部“this”参数。如果可执行对象没有参数(意味着没有形式参数、合成参数和强制参数),则将返回一个长度为零的数组。如果Executable
有一个或多个参数,则对于每个没有注解的参数,将返回长度为零的嵌套数组。返回的数组中包含的注解对象是可序列化的。调用此方法的调用者可以修改返回的数组;这不会影响返回给其他调用者的数组。编译器可能会向方法的参数列表中添加在源代码中隐式声明的额外参数(“强制”),以及在源代码中既不隐式声明也不显式声明的参数(“合成”)。有关更多信息,请参阅Parameter
。请注意,此方法返回的任何注解都是声明注解。
- 返回:
- 表示此对象所代表的可执行对象的形式和隐式参数上的注解的数组的数组
- 参见:
-
getAnnotation
如果存在指定类型的注解,则返回此元素的注解,否则返回null。请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getAnnotation
在接口AnnotatedElement
中 - 覆盖:
-
getAnnotation
在类AccessibleObject
中 - 类型参数:
-
T
- 要查询并返回的注解类型 - 参数:
-
annotationClass
- 对应于注解类型的Class对象 - 返回:
- 如果此元素上存在指定注解类型的注解,则返回此元素的注解,否则返回null
- 抛出:
-
NullPointerException
- 如果给定的注解类为null
-
getAnnotationsByType
返回与此元素关联的注解。如果没有与此元素关联的注解,则返回值为长度为0的数组。此方法与AnnotatedElement.getAnnotation(Class)
之间的区别在于,此方法会检测其参数是否为可重复注解类型(JLS 9.6),如果是,则尝试通过“查找”容器注解来找到一个或多个该类型的注解。调用此方法的调用者可以修改返回的数组;这不会影响返回给其他调用者的数组。请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getAnnotationsByType
在接口AnnotatedElement
中 - 覆盖:
-
getAnnotationsByType
在类AccessibleObject
中 - 类型参数:
-
T
- 要查询并返回的注解类型 - 参数:
-
annotationClass
- 对应于注解类型的Class对象 - 返回:
- 如果与此元素关联的注解类型存在,则返回所有此元素的注解,否则返回长度为0的数组
- 抛出:
-
NullPointerException
- 如果给定的注解类为null
-
getDeclaredAnnotations
返回直接存在于此元素上的注解。此方法会忽略继承的注解。如果此元素上没有直接存在的注解,则返回值为长度为0的数组。调用此方法的调用者可以修改返回的数组;这不会影响返回给其他调用者的数组。请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getDeclaredAnnotations
在接口AnnotatedElement
中 - 覆盖:
-
getDeclaredAnnotations
在类AccessibleObject
中 - 返回:
- 直接存在于此元素上的注解
-
getAnnotatedReturnType
返回一个AnnotatedType
对象,表示用于指定此Executable
所代表的方法/构造函数的返回类型的类型的使用。如果此Executable
对象表示构造函数,则AnnotatedType
对象表示构造对象的类型。如果此Executable
对象表示方法,则AnnotatedType
对象表示用于指定方法返回类型的类型。- 返回:
-
表示此
Executable
所代表的方法或构造函数的返回类型的对象
-
getAnnotatedReceiverType
返回一个AnnotatedType
对象,表示用于指定此Executable
对象所代表的方法/构造函数的接收者类型的类型使用。方法/构造函数的接收者类型仅在方法/构造函数具有接收者参数时才可用(JLS 8.4.1)。如果此Executable
对象表示实例方法或表示内部成员类的构造函数,并且该方法/构造函数要么没有接收者参数,要么具有没有类型注解的接收者参数,则返回值是表示没有注解的元素的AnnotatedType
对象。如果此Executable
对象表示静态方法或表示顶层、静态成员、局部或匿名类的构造函数,则返回值为null。- 返回:
-
表示此
Executable
所代表的方法或构造函数的接收者类型的对象,如果此Executable
无法具有接收者参数,则返回null
- 参见Java语言规范:
-
8.4 方法声明
8.4.1 形式参数
8.8 构造函数声明
-
getAnnotatedParameterTypes
返回一个AnnotatedType
对象数组,表示用于指定此Executable所代表的方法/构造函数的形式参数类型的类型使用。数组中对象的顺序对应于方法/构造函数声明中形式参数类型的顺序。如果方法/构造函数未声明参数,则返回长度为0的数组。请注意,一些内部类的构造函数可能除了显式声明的参数外还有一个隐式声明的参数。- 返回:
-
表示此
Executable
所代表的方法或构造函数的形式参数类型的对象数组
-
getAnnotatedExceptionTypes
返回一个AnnotatedType
对象数组,表示用于指定此Executable所代表的方法/构造函数的已声明异常的类型使用。数组中对象的顺序对应于方法/构造函数声明中异常类型的顺序。如果方法/构造函数未声明异常,则返回长度为0的数组。- 返回:
-
表示此
Executable
所代表的方法或构造函数的已声明异常的对象数组
-