質問

JVM 7の上に動的に型付けされた言語を実装していると仮定します。 invokedynamic 実行時にメソッドをリンクする指示。

動的に型付けされた言語には関数があります add それは、それらを追加することによって整数とそれらを連結することによって文字列に機能します。今それを想定してください add たとえば、(コンパイル時に)オブジェクト、整数または文字列のいずれかを保持していることを知っている一般的なリスト処理方法などによって呼び出されます。

どのようにすることができます invokedynamic 2つの異なる内部関数、つまり整数を追加する実際の関数と文字列を連結する実際の関数にディスパッチする必要があるため、JVMバイトコードにメソッドをコンパイルするときに私を助けてください。

役に立ちましたか?

解決

要するに、 invokedynamic メソッドが属するクラスの知識なしに、特定の署名を使用してメソッドを呼び出すことができます。もしあなたの add() メソッドはただかかります Object (または他の一般的なベースタイプ)引数として、あなたは持っていることができます add(Object) 多くの場合、関係のない多くのクラスの方法、および invokedynamic それらを呼び出すことができます。ターゲットオブジェクトにメソッドがある限り、呼び出されます。

他のヒント

私の研究の間に、私は次のリンクも見つけました。

JSR 292クックブック

これは、JSR 292を使用して動的な言語のランタイムで見つけることができる通常のパターンを実装する方法を示すソースコードのコレクションです。 (説明はページからコピーされました。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top