9

DSL の一部として、Java オブジェクトで任意のユーザー指定メソッドを呼び出すために Java リフレクションを使用しているコードがたくさんあります。

ただし、実際には、これらの Java オブジェクトの多くは Scala オブジェクトであり、それらのメソッドの一部は Scala@deprecatedアノテーションでマークされています。残念ながら、Java のアノテーション メカニズムは Scala アノテーションを認識できません。Scala 2.10 までは、これらのアノテーションにアクセスする便利な方法がありませんでした (私が知っていますか?)。

ようやく 2.10 にアップグレードしました。DSL から非推奨の警告を発したいと考えています。ただし、Scala リフレクションを使用するように (少なくとも今のところ) エバリュエーター全体を書き直したくはないので、Scala リフレクションをjava.lang.reflect.Method使用して Scala メソッドが質問は非推奨ですか?それとも、その情報を取得する前に、Scala リフレクションを使用して既存のメソッド解決ロジックの多くを複製する必要がありますか?

JavaToScalaScala リフレクションに存在していたクラスのように見えます。このクラスmethodToScalaには、私が望むことを実行するメソッドが含まれていました。私が見つけることができる唯一のトレースは、Google コード プロジェクトのhereです。機能がコア リフレクションから移動されたのはなぜですか? それとも別の名前でまだ存在しますか?

編集: 問題のコードは に残っているようですscala.reflect.runtime.JavaMirrorsが、残念ながら非公開です (JavaMirrorsパブリック API の一部ですが、必要なものを提供していないものがあります)。 privatemethodAsScalaの奥深くに埋め込まれた private に至るまで、パブリック API を介した呼び出しの「パス」がある場合は me JavaMirrors。控えめに言っても、イライラします:(

4

1 に答える 1