1.提供一個(gè)接口
2.被代理類
3.創(chuàng)建代理類
public class StudentJdkProxy implements InvocationHandler {
// 定義一個(gè)要代理的原始對象
private Object obj;
// 構(gòu)造方法
public StudentJdkProxy(Object obj) {
super();
this.obj = obj;
}
// 獲得代理對象
public Object getProxy() {
// 參數(shù)1:被代理對象類加載器,參數(shù)2:被代理類實(shí)現(xiàn)的所有的接口,參數(shù)3:被代理對象
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}
// 參數(shù)1:代理對象,參數(shù)2:被代理的方法,參數(shù)3:方法需要的參數(shù)
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
before();
// 參數(shù)1:被代理對象,參數(shù)2:方法參數(shù)
Object result = method.invoke(this.obj, args);
after();
return result;
}
public void before(){
System.out.println("前面執(zhí)行");
}
public void after(){
System.out.println("后面執(zhí)行");
}
}
4.測試類
5.打印結(jié)果