模块  jdk.dynalink
软件包  jdk.dynalink.beans

Interface MissingMemberHandlerFactory

  • Functional Interface:
    这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。

    @FunctionalInterface
    public interface MissingMemberHandlerFactory
    用于创建方法句柄的工厂,用于链接BeansLinker缺少的成员行为。 当缺少所请求的成员(属性,方法或元素)时,BeansLinker将这些方法句柄链接到指定GET_*SET_* StandardOperation的链接请求的GET_*保护调用。 它们将链接到named和未命名的操作。 实现者必须确保返回的方法句柄的参数类型与链接请求中描述的调用站点的参数类型相匹配。 但是,返回类型可以不同,以允许DynamicLinkerFactory.setPrelinkTransformer(jdk.dynalink.linker.GuardedInvocationTransformer)延迟返回类型转换}。 如果默认行为足够,则允许为方法句柄返回null

    默认缺少成员行为

    如果配置的BeansLinker没有缺少成员处理程序工厂,或者工厂为特定处理程序创建调用返回null ,则使用默认行为。 当链接时可以确定链接操作永远不会解决现有成员时,默认行为是从GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)返回null 这使得DynamicLinker尝试下一个链接器(如果有),或者最终使用NoSuchDynamicMethodException使链接请求失败。 对于其他情况(通常是所有未命名的成员操作以及集合元素上的大多数命名操作), BeansLinker将生成一个条件链接,在运行时调用时将返回null ,其名称与getter的任何成员都不匹配,并默认忽略传递的值对于二传手。

    实现异常抛出行为

    请注意,如果缺少成员上的操作的特定于语言的行为是抛出异常,那么工厂应该生成一个方法句柄,该句柄在调用时抛出异常,并且不能抛出异常,因为缺少的成员的链接通常是有条件的。
    另请参见:
    BeansLinker(MissingMemberHandlerFactory)
    • 方法详细信息

      • createMissingMemberHandler

        MethodHandle createMissingMemberHandler​(LinkRequest linkRequest,
                                                LinkerServices linkerServices)
                                         throws 异常
        返回适合实现特定链接请求的缺少成员行为的方法句柄。 有关详细信息,请参阅类说明。
        参数
        linkRequest - 当前链接请求
        linkerServices - 当前的链接服务
        结果
        如果缺少操作所寻址的属性,元素或方法,则可以调用的方法句柄。 返回值可以为null。
        异常
        异常 - 如果操作因任何原因失败。 请遵守类文档说明,以实现抛出异常丢失的成员行为。