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

インタフェースGuardingTypeConverterFactory


public interface GuardingTypeConverterFactory
言語固有の型変換機能を提供するために、GuardingDynamicLinker実装で実装できるオプションのインタフェース。 このインタフェースを実装する場合は、ConversionComparatorインタフェースも実装することをお薦めします。これは、これらの変換に優先順位を付ける方法がないと、オーバーロードされたJavaメソッドにリンクしようとするときに、BeansLinkerが正しいオーバーロードを選択する際に、よりあいまいになるためです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    convertToType(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier)
    指定されたソース・タイプの値を受け取り、指定されたターゲット・タイプに変換された値を戻すガード付き型変換を返します。
  • メソッドの詳細

    • convertToType

      GuardedInvocation convertToType(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier) throws Exception
      指定されたソース・タイプの値を受け取り、指定されたターゲット・タイプに変換された値を戻すガード付き型変換を返します。 値型は、プリミティブ型またはインタフェースを含む参照型のいずれかであるため、言語のオブジェクトをJavaインタフェースおよびクラスに変換するためのコンバータを提供することもできます。

      呼び出しの型は(sourceType)→targetTypeであり、ガードの型は(sourceType)→booleanです。 ソース・タイプがランタイムおよびランタイムのみに固有の場合、無条件呼出し(ガードなし)を返すことができます。

      MethodHandle.asType(MethodType)によって自動的に適用されるので、このメソッドはmethod invocation conversionsに対して決して呼び出されないことに注意してください。 実装では、これらの変換用のコンバータの生成がリクエストされないと想定できます。 言語ランタイムがメソッド呼出し変換をカスタマイズする必要がある場合は、かわりにset an autoconversion strategy in the dynamic linker factoryにする必要があります。

      Dynalinkは、戻されたコンバータの一部をキャッシュするか、同じ変換を作成するようにコンバータ・ファクトリに繰り返しリクエストする自由があります。

      パラメータ:
      sourceType - ソースのタイプ
      targetType - ターゲット・タイプ。
      lookupSupplier - タイプ・コンバータがリクエストされるクラスのルックアップを取得するサプライヤ。 コンバータがinvokedynamic命令のリンクの一部としてリクエストされると、サプライヤはブートストラップ・メソッドに渡されたルックアップを返します。それ以外の場合は、メソッドがLinkerServices.getWithLookup(Supplier, jdk.dynalink.SecureLookupSupplier)内から呼び出されると、セキュア・ルックアップ・サプライヤに委任されます。 いずれの場合も、パブリック・ルックアップが返されます。 ルックアップが必要な典型的なケースは、コンバータがJavaアダプタ・クラスをfly (例えば、動的言語のオブジェクトを相互運用性のためのJavaインタフェースに変換)に作成するときです。 渡されたサプライヤでSupplier.get()メソッドを呼び出すと、SecureLookupSupplier.getLookup()と同じセキュリティ・チェックが適用されます。 実装では、AccessController.doPrivilegedコールの費用を回避するために、ルックアップが不要な場合は、ルックアップの取得を回避する必要があります。
      戻り値:
      オブジェクト(それがガードをパスするならば)を取得し、その表現である別のオブジェクトをターゲット・タイプに強制的に戻すことができるガード付き呼出し。 ファクトリが変換を処理できないことが確実な場合は、nullを返すことができます。 ファクトリが変換を常に処理できることが確実な場合、無条件の呼出し(ガードがヌルの人)を返すことができます。
      例外:
      Exception - コンバータの作成中にエラーが発生した場合
      関連項目: