public interface UserDao { public int add(int a,int b); }
2.创建接口的实现类,实现方法
public class userdaoimpl implements UserDao{ @Override public int add(int a, int b) { return a+b; } }
3.使用Proxy类创建接口代理对象
public class jdkproxy { public static void main(String[] args) { Class[] interfaces ={UserDao.class};//接口 userdaoimpl userdao=new userdaoimpl(); UserDao o = (UserDao) Proxy.newProxyInstance(jdkproxy.class.getClassLoader(), interfaces, new UserDaoProxy(userdao));//返回代理对象。newProxyInstance的三个参数分别是,类加载器、要实现的接口、InvocationHandler接口(创建对象实现该接口) int result=o.add(1,2);//测试方法 System.out.println(result); } } //创建代理对象 class UserDaoProxy implements InvocationHandler{ private Object obj; //传递要代理对象的对象 public UserDaoProxy(Object obj) { this.obj=obj; } //增强逻辑 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(method.getName()+ Arrays.toString(args));//方法执行前,显示方法名和传递的参数 Object res=method.invoke(obj,args);//增强方法执行 System.out.println(obj);//方法执行后,显示 return res; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)