1、概述
1.1、代理模式的一种实现,静态代理与动态代理的区别:编译期是否确定代理对象;
1.2、JDK提供了Proxy类、InvocationHandler接口;
1.3、缺点:只针对接口;
2、案例
package com.an.bytecode.jdkdtdl; /** * @description: * @author: anpeiyong * @date: Created in 2020/4/7 15:03 * @since: */ public interface Person { void say(String name); } package com.an.bytecode.jdkdtdl; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; /** * @description: * @author: anpeiyong * @date: Created in 2020/4/7 15:02 * @since: */ public class MyHandler implements InvocationHandler { @Override public Object invoke(Object proxy, Method method, Object[] args){ System.out.println("执行的方法:"+method); System.out.println("方法的参数:"); for (Object o:args) { System.out.println(o.toString()); } return null; } } package com.an.bytecode.jdkdtdl; import java.lang.reflect.Proxy; /** * @description: * @author: anpeiyong * @date: Created in 2020/4/7 15:02 * @since: */ public class Test { public static void main(String[] args) { MyHandler handler=new MyHandler(); Person personProxy=(Person) Proxy.newProxyInstance(Person.class.getClassLoader(),new Class[]{Person.class},handler); personProxy.say("hello..."); } } 结果: 执行的方法:public abstract void com.an.bytecode.jdkdtdl.Person.say(java.lang.String) 方法的参数: hello...
原文:https://www.cnblogs.com/anpeiyong/p/12653822.html