A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liudh1 中级黑马   /  2016-4-23 08:59  /  422 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ackage liu.dh.reflect;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class Demo8_GetProxy {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  PostBank pBanks = new PostBank();
  Bank1 nBank1 = (Bank1)getProxyInstance(pBanks);
     nBank1.save();
     nBank1.qurey();

}
//动态创建代理对象,在被代理对象创建时,创建
public static Object getProxyInstance(PostBank pBank){
  MyHandler mHandler  = new MyHandler(pBank);
  
return Proxy.newProxyInstance(pBank.getClass().getClassLoader(),
   pBank.getClass().  getInterfaces(), mHandler);
  
}
}
class MyHandler implements InvocationHandler{
private Object target;
public MyHandler(Object target){
  this.target = target;
}
@Override
//实现InvocationHandler,通过调用处理程序实现被代理对象调用方法
public Object invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
  // TODO Auto-generated method stub
  Object object = null;
  ////通过invoke()方法传入被代理类对象,调用其方法
object= method.invoke(target);//没有形式参数可以不写
  return object;
}

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马