- java.lang.Object
-
- jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
-
- All Implemented Interfaces:
-
GuardingDynamicLinker
,TypeBasedGuardingDynamicLinker
public class CompositeTypeBasedGuardingDynamicLinker extends Object implements TypeBasedGuardingDynamicLinker
一种基于复合类型的保护动态链接器。 当遇到尚未看到类的接收者时,所有链接器都按照其TypeBasedGuardingDynamicLinker.canLinkType(Class)
方法进行顺序查询。 返回true的链接器随后被绑定到该类,并且下次遇到相同类型的接收者时,仅将该链接委托给那些链接器,从而加快了发送速度。
-
-
构造方法摘要
构造方法 Constructor 描述 CompositeTypeBasedGuardingDynamicLinker(Iterable<? extends TypeBasedGuardingDynamicLinker> linkers)
创建一个新的基于复合类型的链接器。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
canLinkType(Class<?> type)
如果至少有一个复合链接器从该类型的TypeBasedGuardingDynamicLinker.canLinkType(Class)
返回true, 则返回true。GuardedInvocation
getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices)
在调用站点上创建一个适合于具有指定参数的特定调用的保护调用。static List<GuardingDynamicLinker>
optimize(Iterable<? extends GuardingDynamicLinker> linkers)
优化基于类型的链接器的列表。
-
-
-
构造方法详细信息
-
CompositeTypeBasedGuardingDynamicLinker
public CompositeTypeBasedGuardingDynamicLinker(Iterable<? extends TypeBasedGuardingDynamicLinker> linkers)
创建一个新的基于复合类型的链接器。- 参数
-
linkers
- 组件链接器 - 异常
-
NullPointerException
- 如果linkers
或其任何元素为空。
-
-
方法详细信息
-
canLinkType
public boolean canLinkType(Class<?> type)
如果至少有一个复合链接器从类型为TypeBasedGuardingDynamicLinker.canLinkType(Class)
返回true, 则返回true。- Specified by:
-
canLinkType
在接口TypeBasedGuardingDynamicLinker
- 参数
-
type
- 要链接的类型 - 结果
-
如果至少有一个复合链接器从
TypeBasedGuardingDynamicLinker.canLinkType(Class)
返回true, 则为 true,否则为false。
-
getGuardedInvocation
public GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) throws 异常
说明从接口GuardingDynamicLinker
复制在调用站点上创建一个适合于具有指定参数的特定调用的保护调用。- Specified by:
-
getGuardedInvocation
在接口GuardingDynamicLinker
- 参数
-
linkRequest
- 描述链接特定调用请求的对象 -
linkerServices
- 链接器服务 - 结果
-
使用适合参数的方法句柄进行保护调用,以及如果失败的触发器将重新链接的保护条件。
如果无法解析调用,则必须返回null。
如果返回的调用是无条件的(实际上很少见),返回值中的guard可以为null。
调用也可以有任何数量的切换点用于链接的异步无效,以及一个
Throwable
子类,描述一个也会触发重新链接的预期异常情况(通常情况下,依赖于一个不常见但预期的ClassCastException
比常常更快评估instanceof
后卫)。 链接器必须使用与链接请求的调用站点描述符中的参数类型相匹配的参数类型进行调用,但不应尝试匹配在调用站点中预期的返回类型,除非可以仅使用既不损失精度的转换也没有大小,见LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
进一步解释。 - 异常
-
异常
- 如果由于任何原因操作失败
-
optimize
public static List<GuardingDynamicLinker> optimize(Iterable<? extends GuardingDynamicLinker> linkers)
优化基于类型的链接器的列表。 如果列表中的一组相邻链接器全部实现TypeBasedGuardingDynamicLinker
,则它们将被包含它们的单个实例CompositeTypeBasedGuardingDynamicLinker
替换。- 参数
-
linkers
- 要优化的链接器列表 - 结果
- 优化列表
- 异常
-
NullPointerException
- 如果linkers
或其任何元素为空。
-
-