解读jdk动态代理为什么必须实现接口

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

解读jdk动态代理为什么必须实现接口

你就像甜甜的益达   2023-03-21 我要评论

使用jdk生成代理类

通过jdk实现的动态代理会使用Proxy的newProxyInstance方法:

写一个类实现InvocationHandler,内部要注入对应原代理类的实现:

测试代码:

   TestServiceImpl testService = new TestServiceImpl();
        TestServiceImplHandler testServiceImplHandler = new TestServiceImplHandler(testService);
        TestService testServiceProxy = (TestService)Proxy.newProxyInstance(testService.getClass().getClassLoader(), testService.getClass().getInterfaces(), testServiceImplHandler);
        testServiceProxy.test();

看到生成的代理类父类是Proxy类,通过jdk代理生成的类都继承Proxy类:

因为Java是单继承的,而代理类又必须继承自Proxy类,所以通过jdk代理的类必须实现接口。

生成代理的字节码

还可以通过生成代理类的字节码查看,

package java.lang.reflect;包的Proxy类

通过将生成一半的代理类写到文件里面去:

生成的文件:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们