Module jdk.dynalink

Class Guards

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

public final class Guards extends Object
用于创建MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)和调整其方法类型的典型保护方法的实用方法。
  • Method Details

    • isOfClass

      public static MethodHandle isOfClass(Class<?> clazz, MethodType type)
      创建一个具有指定类型参数但具有布尔返回值的保护方法句柄。当调用时,如果第一个参数是指定类的实例(确切地说,不是子类),则返回true。其余参数将被忽略。
      参数:
      clazz - 要测试的第一个参数的类
      type - 方法类型
      返回:
      一个方法句柄,测试其第一个参数是否为指定类的实例。
    • isInstance

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

      public static MethodHandle isInstance(Class<?> clazz, int pos, MethodType type)
      创建一个具有指定类型参数但具有布尔返回值的方法句柄。当调用时,如果第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)
      获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。应用MethodHandle.asType(MethodType)进行类型转换,并使用MethodHandles.dropArguments(MethodHandle, int, Class...)来匹配请求的类型参数个数。
      参数:
      test - 测试方法句柄
      type - 要调整方法句柄的类型
      返回:
      调整后的方法句柄
    • asType

      public static MethodHandle asType(LinkerServices linkerServices, MethodHandle test, MethodType type)
      获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。应用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。
      返回:
      一个保护方法,测试第一个参数是否不为null。