我知道反射的作用,但我想知道在什么情况下我们可以使用它。比如,使用反射,我们可以知道类是否包含指定的方法。我还想知道这种需求的实际情况?反射的使用对应用程序性能有影响吗?
反射的性能以前在这里回答Java反射性能
不过,快速总结一下:
引用Java关于反射的文档:
由于反射涉及动态解析的类型,因此无法执行某些Java虚拟机优化。因此,反射操作的性能比非反射操作慢,在对性能敏感的应用程序中经常调用的代码部分应该避免反射操作。
如果您无法直接访问某些API(因为API不向公众公开),或者您想要自动化某些事情(单元测试或其他),则反射可能很有用。
如今,许多Java(企业)应用程序严重依赖于使用可以在运行时处理的注释。这只能通过反射来实现。事实上,当前的Java EE标准基本上是围绕注释构建的,这些注释由Java EE应用程序服务器在运行时进行评估。这也是性能方面可能存在问题的地方:一个每天处理数百万个请求的重载服务器将不得不进行数百万次反射方法调用,在这些情况下,每次调用的毫秒数可能会很重要。
然而,与源代码和应用程序系统可维护性的提高相比,在处理时间方面(规模也很好),这被认为是值得的。