- java.lang.Object
-
- jdk.dynalink.linker.support.Guards
-
public final class Guards extends Object
用于为MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
创建典型防护并调整其方法类型的实用方法。
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static MethodHandle
asType(MethodHandle test, MethodType type)
采用一个旨在用作保护的方法句柄,并使其适应所请求的类型,但返回一个布尔值。static MethodHandle
asType(LinkerServices linkerServices, MethodHandle test, MethodType type)
采用一个旨在用作保护的方法句柄,并使其适应所请求的类型,但返回一个布尔值。static MethodHandle
getClassGuard(类<?> clazz)
创建一个guard方法,测试其唯一的参数是否为精确的特定类。static MethodHandle
getIdentityGuard(Object obj)
创建一个guard方法,该方法测试其唯一的参数,使其与另一个对象的引用相同static MethodHandle
getInstanceOfGuard(类<?> clazz)
创建一个guard方法,测试其作为特定类的实例的唯一参数。static MethodHandle
isArray(int pos, MethodType type)
创建一个方法句柄,如果指定位置的参数是Java数组,则返回true。static MethodHandle
isInstance(类<?> clazz, int pos, MethodType type)
使用指定类型的参数创建方法句柄,但使用布尔返回值。static MethodHandle
isInstance(类<?> clazz, MethodType type)
使用指定类型的参数创建方法句柄,但使用布尔返回值。static MethodHandle
isNotNull()
返回一个测试第一个参数是否为null的保护。static MethodHandle
isNull()
返回一个测试第一个参数是否为null的保护。static MethodHandle
isOfClass(类<?> clazz, MethodType type)
使用指定类型的参数创建一个guard方法句柄,但使用布尔返回值。
-
-
-
方法详细信息
-
isOfClass
public static MethodHandle isOfClass(类<?> clazz, MethodType type)
使用指定类型的参数创建一个guard方法句柄,但使用布尔返回值。 调用时,如果第一个参数是指定的类(确切地说是它,而不是子类),则返回true。 其余的参数将被忽略。- 参数
-
clazz
- 要测试的第一个参数的类 -
type
- 方法类型 - 结果
- 方法句柄测试其第一个参数是否属于指定的类。
-
isInstance
public static MethodHandle isInstance(类<?> clazz, MethodType type)
使用指定类型的参数创建方法句柄,但使用布尔返回值。 调用时,如果第一个参数是指定类或其子类的实例,则返回true。 其余的参数将被忽略。- 参数
-
clazz
- 要测试的第一个参数的类 -
type
- 方法类型 - 结果
- 方法句柄测试其第一个参数是否是指定的类或子类。
-
isInstance
public static MethodHandle isInstance(类<?> 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...)
来匹配请求的类型arity。- 参数
-
test
- 测试方法句柄 -
type
- 适应方法句柄的类型 - 结果
- 改编后的方法句柄
-
asType
public static MethodHandle asType(LinkerServices linkerServices, MethodHandle test, MethodType type)
采用一个旨在用作保护的方法句柄,并使其适应所请求的类型,但返回一个布尔值。 应用LinkerServices.asType(MethodHandle, MethodType)
转换类型并使用MethodHandles.dropArguments(MethodHandle, int, Class...)
来匹配请求的类型arity。- 参数
-
linkerServices
- 用于类型转换的链接器服务 -
test
- 测试方法句柄 -
type
- 适应方法句柄的类型 - 结果
- 改编后的方法句柄
-
getClassGuard
public static MethodHandle getClassGuard(类<?> clazz)
创建一个guard方法,测试其唯一的参数是否为精确的特定类。- 参数
-
clazz
- 要测试的类。 - 结果
- 所需的防守方法。
-
getInstanceOfGuard
public static MethodHandle getInstanceOfGuard(类<?> clazz)
创建一个guard方法,测试其作为特定类的实例的唯一参数。- 参数
-
clazz
- 要测试的类。 - 结果
- 所需的防守方法。
-
getIdentityGuard
public static MethodHandle getIdentityGuard(Object obj)
创建一个guard方法,该方法测试其唯一的参数,使其与另一个对象的引用相同- 参数
-
obj
- 用作参照标识测试的对象 - 结果
- 所需的防守方法。
-
isNull
public static MethodHandle isNull()
返回一个测试第一个参数是否为null的保护。- 结果
- 一个测试第一个参数是否为空的守卫。
-
isNotNull
public static MethodHandle isNotNull()
返回一个测试第一个参数是否为null的保护。- 结果
- 一个守护者,测试第一个参数是否为空。
-
-