- 功能接口:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
用于创建方法句柄的工厂,用于链接
BeansLinker
中缺失成员行为的方法句柄。当请求链接指定GET_*
和SET_*
StandardOperation
时,BeansLinker将这些方法句柄链接到受保护的调用中,当请求的成员(属性、方法或元素)缺失时,可以确定或可能缺失。它们将链接到具名和未命名操作。实现者必须确保返回的方法句柄的参数类型与链接请求中描述的调用点的参数类型匹配。返回类型可以不同,以允许DynamicLinkerFactory.setPrelinkTransformer(jdk.dynalink.linker.GuardedInvocationTransformer)
进行延迟返回类型转换。如果默认行为足够,则允许为方法句柄返回null
。
默认缺失成员行为
当BeansLinker
配置为没有缺失成员处理程序工厂,或者工厂对于特定处理程序创建调用返回null
时,将使用默认行为。默认行为是在链接时可以确定链接操作永远不会访问现有成员时,从BeansLinker.getGuardedInvocation(LinkRequest, LinkerServices)
返回null
。这使得DynamicLinker
可以尝试下一个链接器(如果有的话),或者最终使用NoSuchDynamicMethodException
失败链接请求。对于其他情况(通常是所有未命名成员操作以及大多数集合元素的命名操作),BeansLinker
将生成一个条件链接,当在运行时使用与任何成员不匹配的名称调用时,将返回null
用于getter,并在setter的情况下静默忽略传递的值。
实现抛出异常行为
请注意,如果对于缺失成员的操作的特定语言特定行为是抛出异常,则工厂应生成一个在调用时抛出异常的方法句柄,并且不能自身抛出异常,因为缺失成员的链接通常是有条件的。- 参见:
-
Method Summary
Modifier and TypeMethodDescriptioncreateMissingMemberHandler
(LinkRequest linkRequest, LinkerServices linkerServices) 返回适用于为特定链接请求实现缺失成员行为的方法句柄。
-
Method Details
-
createMissingMemberHandler
MethodHandle createMissingMemberHandler(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception 返回适用于为特定链接请求实现缺失成员行为的方法句柄。有关详细信息,请参阅类描述。- 参数:
-
linkRequest
- 当前链接请求 -
linkerServices
- 当前链接服务 - 返回:
- 如果由操作寻址的属性、元素或方法缺失,则可以调用的方法句柄。返回值可以为null。
- 抛出:
-
Exception
- 如果由于任何原因操作失败。请查看类文档注释以了解实现抛出异常的缺失成员行为。
-