- java.lang.Object
-
- jdk.dynalink.linker.support.Guards
-
public final class Guards extends Object
用于创建MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
的典型保护和用于调整其方法类型的实用方法。
-
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 static 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
isNotNull()
返回一个检测第一个参数是否不为空的警戒。static MethodHandle
isNull()
返回一个检测第一个参数是否为空的警戒。static MethodHandle
isOfClass(Class<?> clazz, MethodType type)
使用指定类型的参数创建一个保护方法句柄,但使用布尔返回值。
-
-
-
方法详细信息
-
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()
返回一个检测第一个参数是否为空的警戒。- 结果
- 一个测试第一个参数是否为空的警卫。
-
isNotNull
public static MethodHandle isNotNull()
返回一个检测第一个参数是否不为空的警戒。- 结果
- 一个检测第一个参数是否不为空的警卫。
-
-