本文引用极客时间“动态代理是基于什么原理?”文章中“公号-代码荣耀”的评论
1 关于反射
反射最大的作用就是在我们可以不在编译的时候知道某个对象的类型,而是通过运行时知道、获取、操作某个类
功能:
●在运行时判断任意一个对象的所属类
●在运行时构造任意一个类的对象
●在运行时判断任意一个类的所有成员变量和方法
●在运行时调用任意一个对象的方法
特点:可显示在编译时不好实现的功能(即可在运行时动态实现,即编译时不能确定类型);因为可以越过权限检查,所以会破坏封装性,可能导致安全性问题
2 关于动态代理
就是代理的模式,只不过是动态的,在运行时根据不同的策略来实现不同的具体功能(根据运行时不同的策略来实现不同的代码)