反射的作用与优缺点

优点:灵活
java的反射机制就是增加程序的灵活性,避免将程序写死到代码里, 例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。 使用反射: class.forName("person").newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要修改配置文件的"类描述"就可以了,不需要重新修改代码并编译。 增加程序的灵活性。 如struts中。请求的派发控制。 当请求来到时。struts通过查询配置文件。找到该请求对应的action。已经方法。 然后通过反射实例化action。并调用响应method。 如果不适用反射,那么你就只能写死到代码里了。 所以说,一个灵活,一个不灵活。 很少情况下是非用反射不可的。大多数情况下反射是为了提高程序的灵活性。 因此一般框架中使用较多。因为框架要适用更多的情况。对灵活性要求较高。

缺点:性能低,不够安全,可能出现非正常情况的情况

1反射包括了一些动态类型,所以 JVM 无法对这些代码进行优化。因此,反射操作的效 
率要比那些非反射操作低得多。我们应该避免在经常被 执行的代码或对性能要求很高的程 
序中使用反射。
2使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有 
安全限制的环境中运行,如 Applet,那么这就是个问题了。
3由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方 
法),所以使用反射可能会导致意料之外的副作用--代码有功能上的错误,降低可移植性。 
反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化。

猜你喜欢

转载自www.cnblogs.com/maplesu/p/9912269.html