反射——给定一个类的class实例,你可以获得Constructor,method和field实例。而且,Constructor,method和field实例
使你能够通过反射机制操作他们的底层对等体。
反射机制允许一个类使用另一个类,即使当前被编译的时候,后者还没根本不存在。然后有这种超能力是需要付出代价的:
- 丧失了编译时候的类型检查的好处——包括异常检查。如果通过反射调用不存在或者不可访问的方法,运行时候就会失败。
- 需要写非常笨拙的,冗长的代码——代码写的冗长,不易阅读
- 性能问题——反射机制币普通的方法调用要慢很多
反射机制最初的思想也是为基于组建的应用创建工具而设计的,可能在设计中有使用到,但是对于普通的方法运行时不应该
使用反射机制调用。
必须在编译时无法获取类,但是编译时存在适当的接口或者超类,可以通过反射获取这个类。
简而言之,反射很强大的功能机制不能否认,对于特定复杂系统编程任务,反射机制很有用途,但是他也有很多缺点,
对于普通的方法调用,建议不采用反射机制,如果可能,可以使用反射实例化对象,对于方法的调用,我们使用已经
编译过的对象一致的接口或者超类
【代码优化】反射机制的慎用
时间: 2024-10-04 04:57:44