浏览 2128 次
锁定老帖子 主题:java代理模式的设计动机
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-03
代理模式是为了保证 Java 核心库的类型安全。所有 Java 应用都至少需要引用 java.lang.Object 类,也就是说在运行的时候,java.lang.Object 这个类需要被加载到 Java 虚拟机中。如果这个加载过程由 Java 应用自己的类加载器来完成的话,很可能就存在多个版本的 java.lang.Object 类,而且这些类之间是不兼容的。通过代理模式,对于 Java 核心库的类的加载工作由引导类加载器来统一完成,保证了 Java 应用所使用的都是同一个版本的 Java 核心库的类,是互相兼容的。 不同的类加载器为相同名称的类创建了额外的名称空间。相同名称的类可以并存在 Java 虚拟机中,只需要用不同的类加载器来加载它们即可。不同类加载器加载的类之间是不兼容的,这就相当于在 Java 虚拟机内部创建了一个个相互隔离的 Java 类空间。 jvm如何判定两个类是否一致? 1、类全名是否相同。 2、是否用一个类加载器。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-08-04
用自己的类加载器来完成的话,很可能就存在多个版本的 java.lang.Object 类...
楼主,,,Object可能让你下载多个版本吗? http://wuquanyin1011.iteye.com/admin/blogs/703842 |
|
返回顶楼 | |
发表时间:2010-08-04
lz的显示器真大
|
|
返回顶楼 | |
发表时间:2010-08-04
最后修改:2010-08-04
wu_quanyin 写道 用自己的类加载器来完成的话,很可能就存在多个版本的 java.lang.Object 类...
楼主,,,Object可能让你下载多个版本吗? http://wuquanyin1011.iteye.com/admin/blogs/703842 java.包下面的所有类都是又Bootstrap class Loader加载的。不存在多个版本,也不能ClassLoader#defineClass来重新定义java.下面的类。 |
|
返回顶楼 | |
发表时间:2010-08-04
lz去看看类的双亲委派机制吧
|
|
返回顶楼 | |