DynamicProxy.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:1k
源码类别:

软件工程

开发平台:

Java

  1. package com.company.section1;
  2. import java.lang.reflect.Method;
  3. import java.lang.reflect.Proxy;
  4. /**
  5.  * @author cbf4Life cbf4life@126.com
  6.  * I'm glad to share my knowledge with you all.
  7.  */
  8. public class DynamicProxy {
  9. //定义要代理哪个类
  10. private Object obj =null;
  11. //通过构造函数传递被代理对象
  12. public DynamicProxy(Object _obj){
  13. Class c = _obj.getClass();
  14. //生成被代理类的代理类
  15. this.obj = Proxy.newProxyInstance(c.getClassLoader(), c.getInterfaces(), new MyInvocationHandler(_obj));
  16. }
  17. //执行代理类的方法
  18. public Object exec(String methodName,Object...args){
  19. //返回值
  20. Object result = null;
  21. //方法中的参数类型
  22. Class[] c= new Class[args.length];
  23. int i=0;
  24. //获得参数的类型
  25. for(Object o:args){
  26. c[i] = o.getClass();
  27. i++;
  28. }
  29. try {
  30. //根据方法名称和参数类型查找到唯一一个方法
  31. Method method=this.obj.getClass().getMethod(methodName, c);
  32. //执行该方法
  33. result = method.invoke(this.obj, args);
  34. } catch (Exception e) {
  35. e.printStackTrace();
  36. }
  37. return result;
  38. }
  39. }