Java编程的动态性,第1部分: 类和类装入 - 编程入门网
境中都产生了问题,因为这些环境中的应 用程序以前是依赖于装入它们自己选择的 XML API 实现的。使用 J2SE 1.3,只要在用户类 路径中包含合适的 JAR 文件就可以解决该问题。在 J2SE 1.4 中,这些 API 的标准版现在 位于扩展的类路径中,所以它们通常将覆盖用户类路径中出现的任何实现。
使用多个类装入器还可能引起其它类型的混淆。图 2 显示了 类身份危机(class identity crisis)的示例,它是在两个独立类装入器都装入一个接口及其相关的实现时产生 的危机。即使接口和类的名称和二进制实现都相同,但是来自一个装入器的类的实例不能被 认为是实现了来自另一个装入器的接口。图 2 中通过将接口类 I 移至 System 类装入器的 空间就可以解除这种混淆。类 A 仍然有两个独立的实例,但它们都实现了同一个接口 I 。 图 2. 类身份危机 结束语 Java 类定义和 JVM 规范一起为运行时组装代码定义了功能极其强大的框架。通过使用类 装入器,Java 应用程序能使用多个版本的类,否则这些类就会引起冲突。类装入器的灵活性 甚至允许动态地重新装入已修改的代码,同时应用程序继续执行。 这里,Java 平台灵活性在某种程度上是以启动应用程序时较高的开销作为代价的。在 JVM 可以开始执行甚至最简单的应用程序代码之前,它都必须装入数百个独立的类。相对于 频繁使用的小程序,这个启动成本通常使 Java 平台更适合于长时间运行的服务器类型的应 用程序。服务器应用程序还最大程度地受益于代码在运行时进行组装这种灵活性,所以对于 这种开发,Java 平台正日益受宠也就不足为奇了。 在本系列文章的第 2 部分中,我将介绍使用 Java 平台动态基础的另一个方面:反射 API(Reflection API)。反射使执行代码能够访问内部类信息。这可能是构建灵活代码的极 佳工具,可以不使用类之间任何源代码链接就能够在运行时将代码挂接在一起。但象使用大 多数工具一样,您必须知道何时及如何使用它以获得最大利益。请阅读 Java 编程的动态性 第 2 部分以了解有效反射的诀窍和利弊。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |