私はProxy usage pageに掲載されたSunのコードを使用しようとしましたが、DebugProxyを使用してどのメソッドが呼び出されたかを印刷しようとしました。物事は、私はプロキシを作成しているオブジェクトは、引数を持つ必要があります。私は、コンストラクタの引数でプロキシを作成しようとすると、私は次のエラーが表示されます引数を取るコンストラクタでどのように動的プロキシを使用できますか?
Exception in thread "main" java.lang.ClassCastException: $Proxy0 cannot be cast to myPackage.myClass
私はこのようなプロキシを作成:
MyClass mc = (MyClass) DebugProxy.newInstance(new MyClass(props));
はどうやってプロキシインスタンスを作成することができ、かつそれでも正しいコンストラクタを呼び出しますか?
はい。これは吸う:)。私はDynamicProxyがこれを行う簡単な方法であることを望んでいました。 – Geo
この種類のプロキシは常にインターフェイスベースですが、他のプロキシ生成ライブラリはクラスの種類を直接プロキシすることができます。たとえば、CGLIBでこれを行うことができます。また、SpringのProxyFactoryを介してCGLIBプロキシを使用する場合は、面白く簡単です。 SpringのProxyFactoryは、JDKプロキシまたはCGLIBプロキシのいずれかを生成することができるので、これは有用な抽象化です。 – skaffman