面试官:动态代理了解过吗?
你:嗯,JDK的动态代理是基于反射实现的,CGLib是基于asm来操作字节码实现的。
JDK的动态代码强制需要实现接口,而CGlib是自动生成一个子类来实现的,性能上cglib要好一些。
面试官:那你平时会在哪儿用到动态代理?
你:日常的应用中有日志,安全校验,事务等。SpringAOP 两种都支持。
面试官:你刚提到反射,介绍下?
你:反射可以允许在运行时,动态的访问类,字段,方法。
面试官:那你怎么获取Class呢?
你:获取Class的方法很多,如Obeject.getClass, .class,enum.TYPE,通过方法字段获取declaringClass,匿名类可以获得eclosingClass,就是包裹它的类。