我有以下代码可用于为实现支持的接口类型创建 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。在检查他们的源代码之前,任何人都可以指出需要做什么来代理具体的类类型而不仅仅是接口?