java.lang.Object
jdk.dynalink.linker.support.Guards
用于创建
MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
和调整其方法类型的典型保护方法的实用方法。
-
Method Summary
Modifier and TypeMethodDescriptionstatic MethodHandle
asType
(MethodHandle test, MethodType type) 获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。static MethodHandle
asType
(LinkerServices linkerServices, MethodHandle test, MethodType type) 获取一个预期用作保护的方法句柄,并将其调整为请求的类型,但返回一个布尔值。static MethodHandle
getClassGuard
(Class<?> clazz) 创建一个保护方法,测试其唯一参数是否为特定类的确切实例。static MethodHandle
getIdentityGuard
(Object obj) 创建一个保护方法,测试其唯一参数是否与另一个对象具有引用相等性。static MethodHandle
getInstanceOfGuard
(Class<?> clazz) 创建一个保护方法,测试其唯一参数是否为特定类的实例。static MethodHandle
isArray
(int pos, MethodType type) 创建一个方法句柄,如果指定位置的参数是Java数组,则返回true。static MethodHandle
isInstance
(Class<?> clazz, int pos, MethodType type) 创建一个具有指定类型参数但具有布尔返回值的方法句柄。static MethodHandle
isInstance
(Class<?> clazz, MethodType type) 创建一个具有指定类型参数但具有布尔返回值的方法句柄。static MethodHandle
返回一个保护方法,测试第一个参数是否不为null。static MethodHandle
isNull()
返回一个保护方法,测试第一个参数是否为null。static MethodHandle
isOfClass
(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。
-