実装に裏打ちされたインターフェイス型の Proxy インスタンスを作成するために機能する次のコードがありますがInvocationHandler
、具体的なクラス型を使用すると機能しません。これはよく知られており、Proxy.newProxyInstanceで文書化されています。
// NOTE: does not work because SomeConcreteClass is not an interface type
final ClassLoader myClassLoader = SomeConcreteClass.getClassLoader();
SomeConcreteClass myProxy = (SomeConcreteClass) Proxy.newProxyInstance(myClassLoader, new Class[] {
SomeConcreteClass.class }, new InvocationHandler() { /* TODO */ });
ただし、私の記憶が正しければ、 EasyMockなどの具体的なクラス型をモックできるいくつかのモック フレームワークでこのユースケースが機能するのを見たことがあります。ソースコードをチェックする前に、インターフェースだけでなく具体的なクラスタイプもプロキシするために何をする必要があるかを誰でも示すことができますか?