java基础加强(类加载器、代理,不是很懂)

来源:互联网 发布:access数据库恢复大师 编辑:程序博客网 时间:2024/06/05 10:13

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

1. 类加载器的委托机制:

        每一个类加载器加载类时,先委托其上一级类加载器进行加载,直到最顶级类加载器,然后再逐级往回退,当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛ClassNotFoundException

        这种先由上级进行加载的方式,保证了内存中只有一个字节码,如果各个类加载器各行其事,必然导致内存里的字节码混乱,这种统一管理的方式应该学习。

注:基于类加载器的委托机制,自己写的java.lang.System类一般是不能被被加载的,但是可以通过自定义类加载器劈开委托机制进行加载。

 

2.代理

        这部分其实真的不是很懂,四五遍下来,代码都能顺利写出来,但是知其然不知其所以然的感觉很是不爽,但是时间有限,不理解的记录下来慢慢领悟吧。虽然对这里不是很理解,但是对很多东西总算有一个模糊的概念了,相信在以后的学习中会很顺利的。

        2.1 ArrayList作为target,得到的代理类不能直接强转为ArrayList,但是可以强转为ListCollection,这就限制了ArrayList的特有方法使用。这一点感觉不如使用CGLIB库好,因为CGLIB库可以动态生成一个类的子类,自然就得到了ArrayList的所有方法。

       2.2 AopFramework的部分,为什么会有一个ProxcyBeanFactory的类,直接通过配置文件反射得到targetadvice岂不是更直接,还绕一大圈找代理?不过既然类似spring,而spring还是三大框架中的一个,必然有其优势吧。

       2.3 调用调用代理对象的从Object类继承的hashCode, equals, toString这几个方法时,代理对象将调用请求转发给InvocationHandler对象,对于其他方法,则不转发调用请求。

       这一点想了好一会才大概知道是什么意思,特别标记,加以注意吧。

       2.4 张老师的错误教学法(老师自己取的名字)不错啊,好多地方没出错,自己听的时候感觉也还蛮简单,就直接过了,但是十天半月后自己突然来敲这部分代码居然好多地方不会。但是老师出错的地方自己会额外注意一点,这样印象又深一点。看来真的只有出错才能进步啊。

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

原创粉丝点击