您的位置:首页 > 职场人生

【黑马程序员】张孝祥Java高新技术_类加载器、代理

2011-09-23 00:16 323 查看
---------------------- android培训java培训、期待与您交流! ----------------------

类加载器

1.Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader

2.类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有一个类加载器不是java类,这正是BootStrap。

3.java虚拟机中的所有类装载器采用具有父子挂席的树形结构进行组织,在实例化每个类装载器对象时,需要为其制定一个父级类装载器对象或者默认采用系统类装载器为其父级类加载。

4.每个类加载器加载类时,有先委托给其上级类加载器。(委托机制)

5.有包名的类不能调用无包名的类。

代理

1要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如,异常处理,日志,计算方法的运行时间,事务管理等等

代理类与目标类有相同接口,它的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码,

2.AOP面向方面的编程:交叉业务的编程问题。AOP的目标就是要使交叉业务模块化。

3.jvm可以在运行期动态生成出类的字节码,这种动态生成的类往往被用作代理类,即动态代理类。

4.jvm生成的动态类必须实现一个或多个接口,所以,jvm生成的动态类只能用作具有相同接口的目标的代理。

5.CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理,所以,如果要为一个没有实现接口的类生成动态代理类,那么可以使用CGLIB库。

6.代理类的各个方法中通常除了要调用目标的相应方法和对外返回目标返回的结果外,还可以在代理方法中的如下四个位置加上系统功能代码:

(1)在调用目标方法之前

(2)在调用目标方法之后

(3)在调用目标方法前后

(4)在处理目标方法异常的catch块中

7.让jvm创建动态类及其实例对象,需要给它提供哪些信息?

三个方面

(1) 生成的类中有哪些方法,通过让其实现哪些接口的方式进行告知;

(2) 产生的类字节码必须有个一个关联的类加载器对象;

(3) 生成的类中的方法的代码是怎样的,也得由我们提供。把我们的代码写在一个约定好了接口对象的方法中,把对象传给它,它调用我的方法,即相当于插入了我的代码。

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: