标签:invoke 实现 Object System 代理 public 动态 class out
package pattern; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class DynamicPattern { public static void main(String[] args) throws Throwable { DynamicTest dynamicTest = new DynamicTest(new TChildren()); // T t = (T) Proxy.newProxyInstance(DynamicTest.class.getClassLoader(), new Class[]{T.class},dynamicTest); // t.test();//这里是获取被代理的对象 dynamicTest.invoke(T.class,T.class.getMethod("test"),null);//这里才是通过动态代理对象去调用方法。传参、被代理的对象和对应的方法,第三个参数是方法的参数 } } class DynamicTest implements InvocationHandler { Object target; public DynamicTest(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("执行代理前的方法"); System.out.println("执行代理方法"+method.getName()); System.out.println(method); Object invoke = method.invoke(target,args); System.out.println("执行代理后的方法"); return invoke; } } interface T{ void test(); } class TChildren implements T{ @Override public void test() { System.out.println("要被代理的方法执行了-----------"); } }
标签:invoke,实现,Object,System,代理,public,动态,class,out 来源: https://www.cnblogs.com/thh19201420/p/16457148.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。