-
- All Known Subinterfaces:
-
TypeBasedGuardingDynamicLinker
public interface GuardingDynamicLinker
语言特定动态链接器的基本界面。 这样的连接器总是必须用守卫来产生方法句柄,因为调用站点上的调用的方法句柄的有效性不可避免地取决于一些条件(至少取决于属于链接器的语言运行时的接收器)。 语言运行时实现者通常会将自己的语言的链接逻辑实现为一个或多个GuardingDynamicLinker
类。 他们通常会在自己配置的DynamicLinkerFactory
它们设置为prioritized linkers
,也可能将其设置为fallback linkers
来处理语言特定的“未找到属性”等条件。考虑为那些基于对象的Java类的连接器实现
TypeBasedGuardingDynamicLinker
接口而不是这个接口。 如果您需要实现特定于语言的类型转换,您的GuardingDynamicLinker
还可以实现GuardingTypeConverterFactory
接口。语言可以使用
GuardingDynamicLinkerExporter
向automatic discovery
导出链接器到其他语言运行时。
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 GuardedInvocation
getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices)
在调用站点上创建一个适合于具有指定参数的特定调用的保护调用。
-
-
-
方法详细信息
-
getGuardedInvocation
GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) throws 异常
在调用站点上创建一个适合于具有指定参数的特定调用的保护调用。- 参数
-
linkRequest
- 描述链接特定调用请求的对象 -
linkerServices
- 链接器服务 - 结果
-
使用适合参数的方法句柄进行保护调用,以及如果失败的触发器将重新链接的保护条件。
如果无法解析调用,则必须返回null。
如果返回的调用是无条件的(实际上很少见),返回值中的guard可以为null。
该调用还可以有任何数量的切换点用于链接的异步无效,以及一个
Throwable
子类,描述一个也会触发重新链接的预期异常情况(通常情况下,依赖于一个不常见但预期为ClassCastException
的异常情况)评估instanceof
守卫)。 链接器必须使用与链接请求的调用站点描述符中的参数类型相匹配的参数类型进行调用,但不应尝试匹配在调用站点中预期的返回类型,除非可以仅使用既不损失精度的转换也不是大小,见LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
进一步解释。 - 异常
-
异常
- 如果由于任何原因操作失败
-
-