Lisp のように Java 用の合理的に優れたマルチメソッドの実装/ライブラリがあるかどうか疑問に思っています。
私はこれだけ明らかに凍っているものを見つけました: JMMF
Lisp のように Java 用の合理的に優れたマルチメソッドの実装/ライブラリがあるかどうか疑問に思っています。
私はこれだけ明らかに凍っているものを見つけました: JMMF
JVM で実行され、マルチメソッドのサポートが組み込まれている Clojure を使用できます。
インターフェイスを満たすプロキシを作成することにより、マルチメソッドを使用してJavaインターフェイスを実装できるこのライブラリを作成しました。私はいくつかのプロジェクトでそれを使用しており、合理的に予測可能ですが、ドキュメントを読んでください:Javaのマルチメソッドは奇妙な動作をする可能性があります。
複数のディスパッチの問題に対処するための有効な代替手段がいくつかあります。おそらく、これらの代替手段は、言語に実装されていない理由を正当化するものです。したがって、古典的な訪問者パターンを使用するか、ある程度の反射を使用することができます。
Java で複数のディスパッチ サポートを実装した古いMultiJava Projectがあり、Java でマルチメソッドをサポートするためにリフレクションを使用する他のプロジェクトがいくつかあります: Java Multimethods、Java Multimethods Framework。おそらく、さらに多くのことがあります。
ClojureやGroovyなど、マルチメソッドをサポートする Java ベースの代替言語を検討することもできます(これらのリンクは例を示しています)。