动态代理实现
作者:互联网
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