- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public interface MissingMemberHandlerFactory
BeansLinker
で不足しているメンバーの動作をリンクするためのメソッド・ハンドルを作成するためのファクトリです。 BeansLinkerは、GET_*
およびSET_*
StandardOperation
を指定するリンク・リクエストのガード付き呼出しにこれらのメソッド・ハンドルをリンクします(リクエストされたメンバー(プロパティ、メソッドまたは要素)が欠落していることが確実であるか、または可能な場合)。 これらは、named
操作と名前なし操作の両方にリンクされます。 実装者は、返されたメソッド・ハンドルのパラメータ・タイプが、リンク・リクエストで説明されているコール・サイトのパラメータ・タイプと一致することを確認する必要があります。 ただし、戻り型は、DynamicLinkerFactory.setPrelinkTransformer(jdk.dynalink.linker.GuardedInvocationTransformer)
の遅延戻り型変換を可能にするために異なる場合があります。 デフォルトの動作で十分な場合は、メソッド・ハンドルに対してnull
を戻すことができます。
既定のメンバーの不在動作
欠落しているメンバー・ハンドラ・ファクトリなしでBeansLinker
が構成されている場合、またはファクトリが特定のハンドラ作成呼出しに対してnull
を返す場合、デフォルトの動作が使用されます。 デフォルトの動作では、リンク時にリンクされた操作が既存のメンバーに対処しないと判断できる場合に、null
をBeansLinker.getGuardedInvocation(LinkRequest, LinkerServices)
から戻すことです。 これにより、DynamicLinker
は、次のリンカーが存在する場合、または最終的にNoSuchDynamicMethodException
でリンク・リクエストに失敗した場合に、次のリンカーを試行できます。 その他の場合、(通常はすべての名前のないメンバー操作だけでなく、コレクション要素のほとんどの名前付き操作) BeansLinker
は、実行時にgetterのメンバーと一致しない名前で呼び出されたときにnull
を返す条件付きリンケージを生成し、setterの渡された値を暗黙的に無視します。
動作の例外スローの実装
欠落しているメンバーに対する操作の言語固有の動作が例外をスローする場合、ファクトリは、起動時に例外をスローするメソッド・ハンドルを生成し、欠落しているメンバーのリンケージは条件付きであることが多いため、例外自体をスローしないでください。- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明createMissingMemberHandler
(LinkRequest linkRequest, LinkerServices linkerServices) 特定のリンク・リクエストに対して欠落しているメンバー動作を実装するのに適したメソッド・ハンドルを返します。
-
メソッドの詳細
-
createMissingMemberHandler
MethodHandle createMissingMemberHandler(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception 特定のリンク・リクエストに対して欠落しているメンバー動作を実装するのに適したメソッド・ハンドルを返します。 詳細については、クラスの説明を参照してください。- パラメータ:
linkRequest
- 現在のリンク・リクエストlinkerServices
- 現在のリンク・サービス- 戻り値:
- 操作によって処理されるプロパティ、要素またはメソッドが欠落している場合に呼び出すことができるメソッド・ハンドル。 戻り値はnullの場合があります。
- 例外:
Exception
- なんらかの理由で操作が失敗した場合。 欠落しているメンバー動作の例外スローを実装するには、クラスのドキュメント・ノートを参照してください。
-