第29题:静态代理和动态代理的区别是什么📚回答:核心对比:1. 实现代质关系的方式静态代理:在编码阶段明确目标对象和代理对象的关系,代理类需要手动编写。动态代理:在运行时动态生成代理对象,无需手动编写代理类。2. 灵活性静态代理:灵活性较差,一旦接口增加方法,目标对象和代理对象都需要同步维护。动态代理:灵活性高,代理类由程序自动生成,无需手动维护。3. 性能静态代理:性能较高,因为代理类是直接编译好的。动态代理:性能略低,因为代理类是在运行时动态生成的,会有一定的开销。4. 使用场景静态代理:适合小型项目或简单的功能扩展场景。动态代理:适合大型项目或需要灵活扩展功能的场景(如AOP编程)。💡面试官视角:面试官可能会问“为什么动态代理更灵活?”答:因为动态代理不需要提前编写代理类,代理对象是在运行时根据需求动态生成的,减少了代码冗余。面试官可能会追问“动态代理有哪些局限性?”答:JDK动态代理要求目标对象必须实现接口,CGLIB动态代理无法代理final类或final方法。📌专栏:大白话说Java面试题 — 01-Java基础篇