jdk動態代理爲什麼必須實現接口

使用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類
在這裏插入圖片描述
通過將生成一半的代理類寫到文件裏面去:
在這裏插入圖片描述
生成的文件:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章