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

インタフェースGuardingTypeConverterFactory



  • public interface GuardingTypeConverterFactory
    言語固有の型変換機能を提供するためにGuardingDynamicLinker実装で実装できるオプションのインタフェース。 このインタフェースを実装する場合は、ConversionComparatorインタフェースも実装することをお勧めします。これらの変換の優先順位付けの戦略がない場合、追加の言語固有の変換によって、試行時に正しいオーバーロードを選択する際のBeansLinkerのあいまいさが増しますオーバーロードされたJavaメソッドにリンクします。
    • メソッドの詳細

      • 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 - コンバータの作成中にエラーが発生した場合
        関連項目:
        LinkerServices.getWithLookup(Supplier, SecureLookupSupplier)