主要是实现InvocationHandler接口。
看一个例子:
package com.xygy.mianshi.testdynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class TestDynamicProxy implements InvocationHandler {
public Object target;
public TestDynamicProxy(Object target){
this.target=target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("before");
Object result=method.invoke(target, args);
System.out.println("after");
return result;
}
public Object getProxy(){
return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
target.getClass().getInterfaces(), this);
}
public static void main(String[] args) {
ICircus ic=new CircusImpl();
TestDynamicProxy tdp=new TestDynamicProxy(ic);
ICircus proxy=(ICircus) tdp.getProxy();
proxy.playMonkey();
}
}
接口源码:
package com.xygy.mianshi.testdynamicproxy;
public interface ICircus {
public void playMonkey();
}
实现类源码:
package com.xygy.mianshi.testdynamicproxy;
public class CircusImpl implements ICircus {
@Override
public void playMonkey() {
System.out.println("耍猴子");
}
}
refurl:http://rejoy.iteye.com/blog/1627405