Loading... # JDK动态代理 思路整理 ## 1.提供一个接口和实现类 ```java public interface Skill { void run(); void swim(); } public class Althletes implements Skill{ @Override public void run() { System.out.println("Run fast"); } @Override public void swim() { System.out.println("Swim fast"); } } ``` ## 2.创建代理类 传入目标对象 ```java public class AlthleteProxy { public Skill AlthleteProxy(Althletes obj) { return (Skill) Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces() , ((proxy, method, args) -> { System.out.println("Start"); Object result = method.invoke(proxy, args); System.out.println("Finish"); return result; };)); } } ``` ## 3.调用代理对象 ```java public class Main { public static void main(String[] args) { Skill s = new AlthleteProxy(new Althletes); s.run(); s.swim(); } } ``` 最后修改:2022 年 09 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 本作品采用 CC BY-NC-SA 4.0 International License 进行许可。