模块 jdk.dynalink

类 Guards

java.lang.Object
jdk.dynalink.linker.support.Guards

public final class Guards extends Object
MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle) 创建典型守卫并调整其方法类型的实用方法。
  • 方法详情

    • isOfClass

      public static MethodHandle  isOfClass(Class <?> clazz, MethodType  type)
      使用指定类型的参数创建一个守卫方法句柄,但返回boolean。调用时,如果第一个参数属于指定类(恰好属于它,而不是子类),则返回 true。其余参数将被忽略。
      参数:
      clazz - 要测试的第一个参数的类
      type - 方法类型
      返回:
      一个方法处理测试它的第一个参数是否属于指定的类。
    • isInstance

      public static MethodHandle  isInstance(Class <?> clazz, MethodType  type)
      使用指定类型的参数创建方法句柄,但返回boolean。调用时,如果第一个参数是指定类或其子类的实例,则返回 true)。其余参数将被忽略。
      参数:
      clazz - 要测试的第一个参数的类
      type - 方法类型
      返回:
      一个方法处理测试它的第一个参数是否属于指定的类或子类。
    • isInstance

      public static MethodHandle  isInstance(Class <?> clazz, int pos, MethodType  type)
      使用指定类型的参数创建方法句柄,但返回boolean。调用时,如果第 n 个参数是指定类或其子类的实例,则返回 true。其余参数将被忽略。
      参数:
      clazz - 要测试的第一个参数的类
      pos - 要测试的参数列表中的位置
      type - 方法类型
      返回:
      一个方法处理测试它的第一个参数是否属于指定的类或子类。
    • isArray

      public static MethodHandle  isArray(int pos, MethodType  type)
      如果指定位置的参数是 Java 数组,则创建一个返回 true 的方法句柄。
      参数:
      pos - 点亮参数中的位置
      type - 句柄的方法类型
      返回:
      如果指定位置的参数是 Java 数组,则返回 true 的方法句柄;其余参数将被忽略。
    • asType

      public static MethodHandle  asType(MethodHandle  test, MethodType  type)
      获取一个旨在用作守卫的方法句柄,并将其调整为请求的类型,但返回一个boolean。应用 MethodHandle.asType(MethodType) 转换类型并使用 MethodHandles.dropArguments(MethodHandle, int, Class...) 匹配请求的类型元数。
      参数:
      test - 测试方法句柄
      type - 方法句柄适应的类型
      返回:
      适应的方法句柄
    • asType

      public static MethodHandle  asType(LinkerServices  linkerServices, MethodHandle  test, MethodType  type)
      获取一个旨在用作守卫的方法句柄,并将其调整为请求的类型,但返回一个boolean。应用 LinkerServices.asType(MethodHandle, MethodType) 转换类型并使用 MethodHandles.dropArguments(MethodHandle, int, Class...) 匹配请求的类型元数。
      参数:
      linkerServices - 用于类型转换的链接器服务
      test - 测试方法句柄
      type - 方法句柄适应的类型
      返回:
      适应的方法句柄
    • getClassGuard

      public static MethodHandle  getClassGuard(Class <?> clazz)
      创建一个保护方法来测试其唯一参数是否属于特定的类。
      参数:
      clazz - 要测试的类。
      返回:
      所需的保护方法。
    • getInstanceOfGuard

      public static MethodHandle  getInstanceOfGuard(Class <?> clazz)
      创建一个保护方法,测试其唯一参数是否为特定类的实例。
      参数:
      clazz - 要测试的类。
      返回:
      所需的保护方法。
    • getIdentityGuard

      public static MethodHandle  getIdentityGuard(Object  obj)
      创建一个保护方法,测试其唯一参数是否与另一个对象在引用上相同
      参数:
      obj - 用作参考身份测试的对象
      返回:
      所需的保护方法。
    • isNull

      public static MethodHandle  isNull()
      返回一个测试第一个参数是否为 null 的守卫。
      返回:
      测试第一个参数是否为 null 的守卫。
    • isNotNull

      public static MethodHandle  isNotNull()
      返回一个测试第一个参数是否不为 null 的守卫。
      返回:
      测试第一个参数是否不为空的守卫。