モジュール jdk.dynalink
パッケージ jdk.dynalink.beans

インタフェースMissingMemberHandlerFactory

  • 関数型インタフェース:
    これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。

    @FunctionalInterface
    public interface MissingMemberHandlerFactory
    BeansLinkerで不足しているメンバーの動作をリンクするためのメソッド・ハンドルを作成するためのファクトリです。 BeansLinkerは、リクエストされたメンバー(プロパティ、メソッド、または要素)が不足している可能性があるか、または可能性がある場合に、GET_*およびSET_* StandardOperationを指定するリンク・リクエストに対して、これらのメソッド・ハンドルをガードされた呼び出しにリンクします。 namedと名前のない操作の両方にリンクされます。 実装者は、返されたメソッド・ハンドルのパラメータ型が、リンク・リクエストで記述されている呼び出しサイトのパラメータ型と一致していることを確認する必要があります。 ただし、戻り値の型は、DynamicLinkerFactory.setPrelinkTransformer(jdk.dynalink.linker.GuardedInvocationTransformer)の遅延戻り型変換を可能にするために異なる場合があります)。 デフォルトの動作で十分なら、メソッド・ハンドルのnullを返すことができます。

    既定のメンバーの不在動作

    BeansLinkerがメンバー・ハンドラ・ファクトリが欠落して構成されていないか、または特定のハンドラ作成呼び出しのためにファクトリがnullを戻す場合、デフォルトの動作が使用されます。 デフォルトの動作では、リンク時にリンクされた操作が既存のメンバーに対処しないと判断できる場合に、nullGuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)から戻すことです。 これにより、DynamicLinkerは、次のリンカーがあればそれを試みるか、最終的にNoSuchDynamicMethodExceptionでリンク・リクエストに失敗します。 その他の場合、(通常はすべての名前のないメンバー操作だけでなく、コレクション要素のほとんどの名前付き操作) BeansLinkerは、実行時にgetterのメンバーと一致しない名前でnullが呼び出されたときにnullを返し、渡されたsetterの値を黙って無視する条件付きリンケージを生成します。

    例外スローイング・ビヘイビアの実装

    不足しているメンバーの操作の言語固有の動作が例外をスローすることである場合、ファクトリは、呼び出されたときに例外をスローするメソッド・ハンドルを生成しなければならず、不足しているメンバーのリンケージとして例外自体をスローしてはならない条件付きであることが多い。
    関連項目:
    BeansLinker(MissingMemberHandlerFactory)
    • メソッドの詳細

      • createMissingMemberHandler

        MethodHandle createMissingMemberHandler​(LinkRequest linkRequest,
                                                LinkerServices linkerServices)
                                         throws Exception
        特定のリンク・リクエストに対する不足しているメンバーの動作を実装するのに適したメソッド・ハンドルを返します。 詳細については、クラスの説明を参照してください。
        パラメータ:
        linkRequest - 現在のリンク・リクエスト
        linkerServices - 現在のリンク・サービス
        戻り値:
        操作によってアドレス指定されているプロパティ、要素、またはメソッドが見つからない場合に呼び出されるメソッド・ハンドル。 戻り値はnullの場合があります。
        例外:
        Exception - 何らかの理由で操作が失敗した場合。 例外スローのメンバーの動作を実装するためのクラスのドキュメントの注意事項を守ってください。