java.lang.Object
jdk.dynalink.linker.support.Guards
用于创建
MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)和调整其方法类型的典型保护方法的实用方法。
-
Method Summary
Modifier and TypeMethodDescriptionstatic MethodHandleasType(MethodHandle test, MethodType type) 获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。static MethodHandleasType(LinkerServices linkerServices, MethodHandle test, MethodType type) 获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。static MethodHandlegetClassGuard(Class<?> clazz) 创建一个保护方法,测试其唯一参数是否为特定类的确切实例。static MethodHandlegetIdentityGuard(Object obj) 创建一个保护方法,测试其唯一参数是否与另一个对象具有引用相等性。static MethodHandlegetInstanceOfGuard(Class<?> clazz) 创建一个保护方法,测试其唯一参数是否为特定类的实例。static MethodHandleisArray(int pos, MethodType type) 创建一个方法句柄,如果指定位置的参数是Java数组,则返回true。static MethodHandleisInstance(Class<?> clazz, int pos, MethodType type) 创建一个具有指定类型参数但具有布尔返回值的方法句柄。static MethodHandleisInstance(Class<?> clazz, MethodType type) 创建一个具有指定类型参数但具有布尔返回值的方法句柄。static MethodHandle返回一个保护方法,测试第一个参数是否不为null。static MethodHandleisNull()返回一个保护方法,测试第一个参数是否为null。static MethodHandleisOfClass(Class<?> clazz, MethodType type) 创建一个具有指定类型参数但具有布尔返回值的保护方法句柄。
-
Method Details
-
isOfClass
创建一个具有指定类型参数但具有布尔返回值的保护方法句柄。当调用时,如果第一个参数是指定类的实例(确切地说,不是子类),则返回true。其余参数将被忽略。- 参数:
-
clazz- 要测试的第一个参数的类 -
type- 方法类型 - 返回:
- 一个方法句柄,测试其第一个参数是否为指定类的实例。
-
isInstance
创建一个具有指定类型参数但具有布尔返回值的方法句柄。当调用时,如果第一个参数是指定类或其子类的实例,则返回true。其余参数将被忽略。- 参数:
-
clazz- 要测试的第一个参数的类 -
type- 方法类型 - 返回:
- 一个方法句柄,测试其第一个参数是否为指定类或其子类的实例。
-
isInstance
创建一个具有指定类型参数但具有布尔返回值的方法句柄。当调用时,如果第n个参数是指定类或其子类的实例,则返回true。其余参数将被忽略。- 参数:
-
clazz- 要测试的第一个参数的类 -
pos- 要测试的参数列表中的位置 -
type- 方法类型 - 返回:
- 一个方法句柄,测试其第一个参数是否为指定类或其子类的实例。
-
isArray
创建一个方法句柄,如果指定位置的参数是Java数组,则返回true。- 参数:
-
pos- 参数列表中的位置 -
type- 句柄的方法类型 - 返回:
- 一个方法句柄,如果指定位置的参数是Java数组,则返回true;其余参数将被忽略。
-
asType
获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。应用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
创建一个保护方法,测试其唯一参数是否为特定类的确切实例。- 参数:
-
clazz- 要测试的类 - 返回:
- 所需的保护方法
-
getInstanceOfGuard
创建一个保护方法,测试其唯一参数是否为特定类的实例。- 参数:
-
clazz- 要测试的类 - 返回:
- 所需的保护方法
-
getIdentityGuard
创建一个保护方法,测试其唯一参数是否与另一个对象具有引用相等性。- 参数:
-
obj- 用作引用相等性测试的对象 - 返回:
- 所需的保护方法
-
isNull
返回一个保护方法,测试第一个参数是否为null。- 返回:
- 一个保护方法,测试第一个参数是否为null。
-
isNotNull
返回一个保护方法,测试第一个参数是否不为null。- 返回:
- 一个保护方法,测试第一个参数是否不为null。
-