public interface GuardingTypeConverterFactory
言語固有の型変換機能を提供するために、
GuardingDynamicLinker
実装で実装できるオプションのインタフェース。 このインタフェースを実装する場合は、ConversionComparator
インタフェースも実装することをお薦めします。これは、これらの変換に優先順位を付ける方法がないと、オーバーロードされたJavaメソッドにリンクしようとするときに、BeansLinker
が正しいオーバーロードを選択する際に、よりあいまいになるためです。 - 導入されたバージョン:
- 9
-
メソッドのサマリー
修飾子と型メソッド説明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
- コンバータの作成中にエラーが発生した場合- 関連項目:
-