1.JDK动态代理为什么必须针对接口?
由于java的单继承,动态生成的代理类已经继承了Proxy类的,就不能再继承其他的类,所以只能靠实现被代理类的接口的形式,故JDK的动态代理必须有接口。
2.为何调用代理类的方法就会自动进入InvocationHandler 的 invoke()方法呢?
因为在动态代理类的定义中,构造函数是含参的构造,参数就是invocationHandler 实例,而每一个被代理接口的方法都会在代理类中生成一个对应的实现方法,并在实现方法中最终调用invocationHandler 的invoke方法,然后在invoke方法中再利用jdk反射的方式去调用真正的被代理类的业务方法,而且还可以在方法的前后去加一些我们自定义的逻辑。