我知道反射的作用,但我想知道我们可以使用它的具体情况。就像使用反射一样,我们可以知道类是否包含指定的方法。我还想知道这种要求可以出现的实际情况吗?反射的使用是否会对应用程序性能产生影响?
答案 0 :(得分:2)
以前在此处Java Reflection Performance
回答了反映的效果然而,只是为了快速总结:
引用Java's documentation on reflection:
由于反射涉及动态解析的类型,因此无法执行某些Java虚拟机优化。因此,反射操作的性能低于非反射操作,应避免在对性能敏感的应用程序中频繁调用的代码段中。
如果您无法直接访问某些API(因为API不向公众公开)或者您希望自动化某些内容(单元测试或其他内容),则反射非常有用。
答案 1 :(得分:2)
今天,许多Java(企业)应用程序严重依赖于可以在运行时处理的annotations。这只能使用反射。实际上,当前的Java EE标准基本上是围绕注释构建的,这些注释由Java EE应用程序服务器在运行时进行评估。这也是性能方面可能成为问题的地方:每天处理数百万个请求的负载很重的服务器将需要进行数百万次反射方法调用,并且在这些情况下每次调用的毫秒数可能会计算在内。
然而,与源代码和应用程序系统的可维护性增加相比,在处理时间(也很好地扩展)方面的开销被认为是值得的。