如您所述,您不能使用JDK动态代理(无接口),但是使用Spring和CGLIB(Spring附带的JAR),您可以执行以下 *** 作:
public class Foo{ public void setBar() { throw new UnsupportedOperationException("should not go here"); } public void redirected() { System.out.println("Yiha"); }}Foo foo = new Foo();ProxyFactory pf = new ProxyFactory(foo);pf.addAdvice(new MethodInterceptor(){ public Object invoke(MethodInvocation mi) throws Throwable { if (mi.getMethod().getName().startsWith("set")) { Method redirect = mi.getThis().getClass().getMethod("redirected"); redirect.invoke(mi.getThis()); } return null; }});Foo proxy = (Foo) pf.getProxy();proxy.setBar(); // prints "Yiha"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)