可以使用Javassist(请参见ProxyFactory)或CGLIB来完成。
亚当使用Javassist的示例:
我(Adam Paynter)使用Javassist编写了以下代码:
ProxyFactory factory = new ProxyFactory();factory.setSuperclass(Dog.class);factory.setFilter( new MethodFilter() { @Override public boolean isHandled(Method method) { return Modifier.isAbstract(method.getModifiers()); } });MethodHandler handler = new MethodHandler() { @Override public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable { System.out.println("Handling " + thisMethod + " via the method handler"); return null; }};Dog dog = (Dog) factory.create(new Class<?>[0], new Object[0], handler);dog.bark();dog.fetch();产生以下输出:
纬!通过方法处理程序处理公共抽象void mock.Dog.fetch()



