为什么jdk代理必须要⽤接⼝
时间: 2023-07-12 07:02:39 浏览: 110
关于jdk动态代理的源码剖析
在 Java 中,JDK 动态代理是基于接口实现的。原因在于 JDK 动态代理生成的代理类是实现了目标对象所实现的接口的,代理类中包含了目标对象的所有方法,并且在代理类的方法中调用了 InvocationHandler 接口的 invoke() 方法。因此,如果目标对象没有实现任何接口,则代理类无法实现与目标对象相同的接口,也就无法调用 InvocationHandler 接口的 invoke() 方法,因此 JDK 动态代理无法实现对目标对象的代理。
另一方面,接口是 Java 语言中一种抽象类型,它只包含方法的声明,而不包含方法的实现。因此,一个类实现了一个接口,就相当于承诺了实现该接口中声明的所有方法。在 JDK 动态代理中,代理类实现了与目标对象相同的接口,从而可以代理目标对象的方法调用,将方法调用转发给 InvocationHandler 接口的 invoke() 方法进行处理,实现对目标对象的增强。
综上所述,JDK 动态代理必须要用接口的原因在于,代理类必须实现与目标对象相同的接口,才能够调用 InvocationHandler 接口的 invoke() 方法,从而实现对目标对象的代理。如果目标对象没有实现任何接口,则无法使用 JDK 动态代理。
阅读全文