私はいくつかのレガシーコードで静的メソッドを持っています。これは複数のクライアントから呼び出されます。私はそれを無効にするオプションや、依存性注入によって動作を変更するオプションはないことは明らかです。私は既存のクラスを変更することはできません。リフレクションによるメソッドの動作を変更するにはどうすればよいですか?
私が今したいことは、リフレクションを使用して(そのシグネチャと戻り値の型で)その動作を変更することです。
可能ですか?もしそうでなければ、どんなデザインパターンも私を救うことができますか?
ありがとうございます!
EDIT:私は何を変更/変更できるかについていくつかの混乱があります。既存のクラス/メソッドは変更できませんが、プロジェクトにクラスを追加できます。既存のクラスでできることは、そのクラスに注釈を付けることです。これは、既存のコードで何かを壊すのを避けるために行われます。つまり、大きなプロジェクトのための完全なテストです。
EDIT 2:Androidではjava.lang.Instrumentationは利用できません。
なぜ反射? –
あなたはそれを変更することはできませんが、あなたはリフレクションによって変更することができますか?それはもっと危険なようです。 – Keppil
これはメンテナンスの悪夢に終わると思います。コードはそれを読んだ誰かに横たわっています。行って、そのクラスを変更する承認を得てください。 – SpaceTrucker