反射实践 - 编程入门网
是适合于复杂的数据类型。
让我们创建一个名为 Address 的新类,并用该类进行试验。该类的代码如下所示。
反射实践(10)时间:2011-08-09 Albert Attard现在,让我们创建 Book 和 Address 类的一个实例并应用我们的搜索方法。
第一个匹配(针对 Book 实例的匹配)将返回 false,而地址实例将返回 true。可以针对任何对象应 用此搜索方法,而无需添加或执行任何内容。 反射的缺点 直到现在,我们仅仅讨论了反射如何好以及它如何使生活更轻松。不幸的是,任何事情都有代价。尽 管反射功能非常强大并且提供了很大的灵活性,但是我们不应该使用反射编写任何内容。如果可能的话, 在某些情况下您可能希望避免使用反射。因为反射会引入以下缺点:性能开销、安全限制以及暴露隐藏的 成员。 有时,通过访问修改程序保存逻辑。下面的代码片段就是一个鲜明的例子:
当初始化对象后,只能通过构造函数更改学生的姓名。使用反射,您可以将学生的姓名设置任何 String,甚至在初始化对象之后也可以。正如您所见到的一样,这样会打乱业务逻辑并且可能会使程序行 为不可预测。 与大多数其他编译器一样,Java 编译器尝试尽可能多的优化代码。对于反射这是不可能的,因为反射 是在运行时解析类型,而编译器是在编译时工作。此外,必须在稍后的阶段即运行时解析类型。 结束语 反射可用于在不同对象中实现相同的逻辑(如搜索), 而不需要为每个新类型都创建新代码。这样也 有利于对逻辑进行集中管理。遗憾的是,反射也存在缺点,它有时会增加代码的复杂性。性能是对反射的 另一个负面影响,因为无法在此类代码上执行优化。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |