Module java.base

Class Executable

所有已实现的接口:
AnnotatedElement, GenericDeclaration, Member
直接已知的子类:
Constructor, Method

public abstract sealed class Executable extends AccessibleObject implements Member, GenericDeclaration permits Constructor<T>, Method
一个共享的超类,用于MethodConstructor的通用功能。
自Java版本:
1.8
  • Method Details

    • getDeclaringClass

      public abstract Class<?> getDeclaringClass()
      返回代表声明此对象所代表的可执行对象的类或接口的Class对象。
      指定者:
      getDeclaringClass 在接口 Member
      返回:
      表示底层成员的声明类的对象
    • getName

      public abstract String getName()
      返回此对象所代表的可执行对象的名称。
      指定者:
      getName 在接口 Member
      返回:
      底层成员的简单名称
    • getModifiers

      public abstract int getModifiers()
      返回此对象所代表的可执行对象的Java语言modifiers
      指定者:
      getModifiers 在接口 Member
      返回:
      此对象所代表的可执行对象的Java语言modifiers
      参见:
    • accessFlags

      public Set<AccessFlag> accessFlags()
      返回此对象所代表的可执行对象的不可修改的access flags集合,可能为空。
      指定者:
      accessFlags 在接口 Member
      返回:
      此对象所代表的可执行对象的不可修改的access flags集合,可能为空
      参见Java虚拟机规范:
      4.6 Methods
      自Java版本:
      20
      参见:
    • getTypeParameters

      public abstract TypeVariable<?>[] getTypeParameters()
      返回一个TypeVariable对象数组,表示此GenericDeclaration对象声明的泛型声明的类型变量,按声明顺序。如果底层泛型声明未声明任何类型变量,则返回长度为0的数组。
      指定者:
      getTypeParameters 在接口 GenericDeclaration
      返回:
      一个TypeVariable对象数组,表示此泛型声明声明的类型变量
      抛出:
      GenericSignatureFormatError - 如果此泛型声明的泛型签名不符合Java虚拟机规范中指定的格式
    • getParameterTypes

      public abstract Class<?>[] getParameterTypes()
      返回一个Class对象数组,表示此对象所代表的可执行对象的声明顺序的形式参数类型。如果底层可执行对象不接受参数,则返回长度为0的数组。请注意,一些内部类的构造函数可能除了显式声明的参数外还有一个隐式声明的参数。
      返回:
      此对象所代表的可执行对象的参数类型
    • getParameterCount

      public abstract int getParameterCount()
      返回此对象所代表的可执行对象的形式参数的数量(无论是显式声明的、隐式声明的还是两者都不是)。
      返回:
      此对象所代表的可执行对象的形式参数的数量
    • getGenericParameterTypes

      public Type[] getGenericParameterTypes()
      返回一个Type对象数组,表示此对象所代表的可执行对象的声明顺序的形式参数类型。如果底层可执行对象不接受参数,则返回长度为0的数组。请注意,一些内部类的构造函数可能除了显式声明的参数外还有一个隐式声明的参数。另请注意,作为一个建模工件,返回的参数数量可能会因是否存在泛型信息而有所不同。如果存在泛型信息,则只返回源代码中显式存在的参数;如果不存在泛型信息,则可能还会返回隐式和合成参数。

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

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

      返回:
      一个表示底层可执行对象的形式参数类型的Type数组,按声明顺序
      抛出:
      GenericSignatureFormatError - 如果泛型方法签名不符合Java虚拟机规范中指定的格式
      TypeNotPresentException - 如果底层可执行对象的任何参数类型引用不存在的类型声明
      MalformedParameterizedTypeException - 如果底层可执行对象的参数类型引用由于任何原因无法实例化的参数化类型
    • getParameters

      public Parameter[] getParameters()
      返回一个表示此对象所代表的基础可执行对象的所有参数的Parameter对象数组。如果可执行对象没有参数,则返回长度为0的数组。

      基础可执行对象的参数不一定具有唯一的名称,或者在Java编程语言(JLS 3.8)中是合法标识符的名称。

      返回:
      表示此对象所代表的基础可执行对象的所有参数的Parameter对象数组
      抛出:
      MalformedParametersException - 如果类文件包含格式不正确的MethodParameters属性。
    • getExceptionTypes

      public abstract Class<?>[] getExceptionTypes()
      返回一个表示此对象所代表的基础可执行对象声明要抛出的异常类型的Class对象数组。如果可执行对象在其throws子句中没有声明异常,则返回长度为0的数组。
      返回:
      表示此对象所代表的基础可执行对象声明要抛出的异常类型的数组
    • getGenericExceptionTypes

      public Type[] getGenericExceptionTypes()
      返回一个表示此可执行对象声明要抛出的异常的Type对象数组。如果基础可执行对象在其throws子句中没有声明异常,则返回长度为0的数组。

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

      返回:
      表示基础可执行对象抛出的异常类型的Types数组
      抛出:
      GenericSignatureFormatError - 如果通用方法签名不符合Java虚拟机规范中指定的格式
      TypeNotPresentException - 如果基础可执行对象的throws子句引用了不存在的类型声明
      MalformedParameterizedTypeException - 如果基础可执行对象的throws子句引用了由于任何原因都无法实例化的参数化类型
    • toGenericString

      public abstract String 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

      public abstract Annotation[][] getParameterAnnotations()
      返回一个表示此对象所代表的Executable的形式参数上的注解的Annotation数组的数组,按声明顺序排列。将在返回的数组中表示合成和强制参数(请参见下面的解释),例如内部类构造函数的外部“this”参数。如果可执行对象没有参数(意味着没有形式参数、合成参数和强制参数),则将返回一个长度为零的数组。如果Executable有一个或多个参数,则对于每个没有注解的参数,将返回长度为零的嵌套数组。返回的数组中包含的注解对象是可序列化的。调用此方法的调用者可以修改返回的数组;这不会影响返回给其他调用者的数组。编译器可能会向方法的参数列表中添加在源代码中隐式声明的额外参数(“强制”),以及在源代码中既不隐式声明也不显式声明的参数(“合成”)。有关更多信息,请参阅Parameter

      请注意,此方法返回的任何注解都是声明注解。

      返回:
      表示此对象所代表的可执行对象的形式和隐式参数上的注解的数组的数组
      参见:
    • getAnnotation

      public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
      如果存在指定类型的注解,则返回此元素的注解,否则返回null。

      请注意,此方法返回的任何注解都是声明注解。

      指定者:
      getAnnotation 在接口 AnnotatedElement
      覆盖:
      getAnnotation 在类 AccessibleObject
      类型参数:
      T - 要查询并返回的注解类型
      参数:
      annotationClass - 对应于注解类型的Class对象
      返回:
      如果此元素上存在指定注解类型的注解,则返回此元素的注解,否则返回null
      抛出:
      NullPointerException - 如果给定的注解类为null
    • getAnnotationsByType

      public <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
      返回与此元素关联的注解。如果没有与此元素关联的注解,则返回值为长度为0的数组。此方法与AnnotatedElement.getAnnotation(Class)之间的区别在于,此方法会检测其参数是否为可重复注解类型(JLS 9.6),如果是,则尝试通过“查找”容器注解来找到一个或多个该类型的注解。调用此方法的调用者可以修改返回的数组;这不会影响返回给其他调用者的数组。

      请注意,此方法返回的任何注解都是声明注解。

      指定者:
      getAnnotationsByType 在接口 AnnotatedElement
      覆盖:
      getAnnotationsByType 在类 AccessibleObject
      类型参数:
      T - 要查询并返回的注解类型
      参数:
      annotationClass - 对应于注解类型的Class对象
      返回:
      如果与此元素关联的注解类型存在,则返回所有此元素的注解,否则返回长度为0的数组
      抛出:
      NullPointerException - 如果给定的注解类为null
    • getDeclaredAnnotations

      public Annotation[] getDeclaredAnnotations()
      返回直接存在于此元素上的注解。此方法会忽略继承的注解。如果此元素上没有直接存在的注解,则返回值为长度为0的数组。调用此方法的调用者可以修改返回的数组;这不会影响返回给其他调用者的数组。

      请注意,此方法返回的任何注解都是声明注解。

      指定者:
      getDeclaredAnnotations 在接口 AnnotatedElement
      覆盖:
      getDeclaredAnnotations 在类 AccessibleObject
      返回:
      直接存在于此元素上的注解
    • getAnnotatedReturnType

      public abstract AnnotatedType getAnnotatedReturnType()
      返回一个AnnotatedType对象,表示用于指定此Executable所代表的方法/构造函数的返回类型的类型的使用。如果此Executable对象表示构造函数,则AnnotatedType对象表示构造对象的类型。如果此Executable对象表示方法,则AnnotatedType对象表示用于指定方法返回类型的类型。
      返回:
      表示此Executable所代表的方法或构造函数的返回类型的对象
    • getAnnotatedReceiverType

      public AnnotatedType getAnnotatedReceiverType()
      返回一个AnnotatedType对象,表示用于指定此Executable对象所代表的方法/构造函数的接收者类型的类型使用。方法/构造函数的接收者类型仅在方法/构造函数具有接收者参数时才可用(JLS 8.4.1)。如果此Executable对象表示实例方法或表示内部成员类的构造函数,并且该方法/构造函数要么没有接收者参数,要么具有没有类型注解的接收者参数,则返回值是表示没有注解的元素的AnnotatedType对象。如果此Executable对象表示静态方法或表示顶层、静态成员、局部或匿名类的构造函数,则返回值为null。
      返回:
      表示此Executable所代表的方法或构造函数的接收者类型的对象,如果此Executable无法具有接收者参数,则返回null
      参见Java语言规范
      8.4 方法声明
      8.4.1 形式参数
      8.8 构造函数声明
    • getAnnotatedParameterTypes

      public AnnotatedType[] getAnnotatedParameterTypes()
      返回一个AnnotatedType对象数组,表示用于指定此Executable所代表的方法/构造函数的形式参数类型的类型使用。数组中对象的顺序对应于方法/构造函数声明中形式参数类型的顺序。如果方法/构造函数未声明参数,则返回长度为0的数组。请注意,一些内部类的构造函数可能除了显式声明的参数外还有一个隐式声明的参数。
      返回:
      表示此Executable所代表的方法或构造函数的形式参数类型的对象数组
    • getAnnotatedExceptionTypes

      public AnnotatedType[] getAnnotatedExceptionTypes()
      返回一个AnnotatedType对象数组,表示用于指定此Executable所代表的方法/构造函数的已声明异常的类型使用。数组中对象的顺序对应于方法/构造函数声明中异常类型的顺序。如果方法/构造函数未声明异常,则返回长度为0的数组。
      返回:
      表示此Executable所代表的方法或构造函数的已声明异常的对象数组