Java 为什么JDK动态代理只能通过接口代理

Java 为什么JDK动态代理只能通过接口代理,java,proxy,Java,Proxy,我知道我们可以使用cglib代理类。我想知道为什么JDK动态代理只能通过接口进行代理。我已经阅读了源代码 /* * Verify that the Class object actually represents an * interface. */ if (!interfaceClass.isInterface()) { throw new IllegalArgumentException( interfaceClass.getName() + " is not an

我知道我们可以使用cglib代理类。我想知道为什么JDK动态代理只能通过接口进行代理。我已经阅读了源代码

/*
* Verify that the Class object actually represents an
* interface.
*/
if (!interfaceClass.isInterface()) {
    throw new IllegalArgumentException(
        interfaceClass.getName() + " is not an interface");
}
在Proxy.newProxyInstance(loader、interfaces、h)方法中,它将检查条件。
我想知道为什么必须是接口?这是标准?

只是个人理解:
JDK
动态代理的原理是基于传入接口创建一个新类,它可以确保生成的结构是一致的。
Cglib
用于创建继承类的子类,使用ASM库动态修改代码以实现子类,因此您可以使用传入类引用来实现代理类。

当然这是标准。这就是Javadoc中所说的。这个问题毫无意义。如果您想让它知道为什么它是标准,那么这是一个更有趣的问题,但对于Java开发团队之外的任何地方,您都无法合理地期望得到答案。