第十四天

1.jdk动态代理必须有接口

查看jdk的动态代理源码发现:

动态代理实际上是程序在运行中,根据被代理的接口来动态生成代理类的class文件,并加载class文件运行的过程,通过反编译被生成的$Proxy0.class文件发现:

    class类定义为:

public final class $Proxy0extendsProxyimplementsInterface {

public $Proxy0(InvocationHandler paramInvocationHandler) {  

            super(paramInvocationHandler);  

          } 

        ...

...

        // 该方法为被代理接口的业务方法,代理类都会自动生成相应的方法,里面去执行invocationHandler 的invoke方法。

public final voidsayHello(String paramString) {

            try {  

 this.h.invoke(this, m3, new Object[] { paramString });  

                return;  

            }  

            catch (Error|RuntimeException localError) {  

                throw localError;  

            }  

            catch (Throwable localThrowable) {  

                throw new UndeclaredThrowableException(localThrowable);  

            }  

      } 

    }

    由于java的单继承,动态生成的代理类已经继承了Proxy类的,就不能再继承其他的类,所以只能靠实现被代理类的接口的形式,故JDK的动态代理必须有接口。

2.什么是解耦合什么是耦合

是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

解耦就是用数学方法将两种运动分离开来处理问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • https://blog.csdn.net/luanlouis/article/details/24589193 ...
    小陈阿飞阅读 1,001评论 1 1
  • title: Jdk动态代理原理解析 tags:代理 categories:笔记 date: 2017-06-14...
    行径行阅读 19,738评论 3 36
  • 定制类 写在前面:看到类似__slots__这样形如__xxx__的变量或者函数名就要注意,这些在python中是...
    7季阅读 270评论 0 0
  • 双引号适用于本地文件(你自己创建的文件),而不是系统文件。 点运算符通常用在属性上,用于设置或取得实例变量的值。 ...
    YAN7阅读 153评论 0 0
  • 我觉得吴亦凡长的很像韩国明星,可能因为他以前在韩国发展过吧! 这次用了荷兰白卡,除了没起毛,我也没用出其他优势,以...
    阿佳_Ajia阅读 546评论 0 3

友情链接更多精彩内容