Java / C#中反射的用途是什么?
这个问题在这里已经有了答案:
简而言之:因为有时在编译时你不知道“Foo”或“hello”部分。
绝大多数时候你都知道这一点,所以不值得使用反思。 但是,有时候,你不会 - 在那个时候,反射就是你可以转向的。
例如,协议缓冲区允许您生成代码,其中包含用于读取和写入消息的完整静态类型代码,或者生成足够的代码以便其余代码可以通过反射完成:在反射情况下,加载/保存代码必须通过反射来获取和设置属性 - 它知道由于消息描述符而涉及的属性的名称。 这太慢了很多,但会导致代码的生成量大大减少。
另一个例子是依赖注入,其中用于依赖关系的类型的名称通常在配置文件中提供:然后DI框架必须使用反射来构建所涉及的所有组件,沿途查找构造函数和/或属性。
只要你(=你的方法/你的类)在编译时不知道类型应该实例化或者它应该调用的方法,就会使用它。
此外,许多框架使用反射来分析和使用您的对象。 例如:
String
,并且您可以获取目标类,获取具有配置名称的方法并调用它,而无需在编译时知道它。 典型的用法是插件机制,它支持在编译时未知的类(通常是接口的实现)。
链接地址: http://www.djcxy.com/p/47609.html上一篇: What is the use of reflection in Java/C# etc
下一篇: Why Spring's ReflectionUtils marked as "Only intended for internal use"?