快速业务通道

Java编程的动态性,第2部分: 引入反射 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
射的对象编写了类似的计时测试程序,但这种情况下的差异不象字段和 方法调用情况下那么显著。使用 newInstance() 调用创建一个简单的 java.lang.Object 实 例耗用的时间大约是在Sun 1.3.1 JVM上使用 new Object() 的12倍,是在IBM 1.4.0 JVM的 四倍,只是Sun 1.4.1 JVM上的两部。使用 Array.newInstance(type, size) 创建一个数组 耗用的时间是任何测试的JVM上使用 new type[size] 的两倍,随着数组大小的增加,差异逐 步缩小。

结束语

Java 语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类 的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非 常普通的方式与对象协作的库。例如,反射经常在持续存储对象为数据库、XML或其它外部格 式的框架中使用。

反射有两个缺点。第一个是性能问题。当用于字段和方法接入时反射要远慢于直接代码。 性能问题的程度取决于程序中是如何使用反射的。如果它作为程序运行中相对很少涉及的部 分,缓慢的性能将不会是一个问题。即使测试中最坏情况下的计时图显示的反射操作只耗用 几微秒。仅反射在性能关键的应用的核心逻辑中使用时性能问题才变得至关重要。

许多应用更严重的一个缺点是使用反射会模糊程序内部实际要发生的事情。程序人员希望 在源代码中看到程序的逻辑,反射等绕过了源代码的技术会带来维护问题。反射代码比相应 的直接代码更复杂,正如性能比较的代码实例中看到的一样。解决这些问题的最佳方案是保 守地使用反射-- 仅在它可以真正增加灵活性的地方 -- 记录其在目标类中的使用。

在下一部分,我将提供如何使用反射的更详细实例。这种实例提供一个处理Java应用命令 行参数的API,一种您可能发现适用于自己应用的工具。它还基于反射的优势来创建,同时避 免其弱点。反射是否能简化您的命令行处理?您可以在 Java编程的动态性第3部分找到答案 。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号