我希望有人能指出一些关于Java中使用反射的最佳实践的有用信息。
我支持的当前项目使用Oracle ADF Faces,我们发现,根据手头的目标,某些页面最终会包含大量组件,这些组件需要在backing中进行初始化。团队中的一名开发人员设计了一个解决方案,使用bean构造函数中的反射来初始化特定页面的所有成员组件。
有人担心这可能会违反最佳实践,尽管这可能会节省一些开发人员的时间,但可能会影响应用程序的性能。
有没有人以这种方式使用反射?这是可接受的,还是应该由开发人员手动编写代码?
发布于 2009-06-09 16:04:37
应该尽可能避免反射,因为您应该处理一些通常属于编译器能力的任务;此外,使用反射会使重构变得更加困难,因为有些工具不能在反射上工作(想想eclipse的重构)。
反射对性能有影响,但我认为这是关于可管理性问题的一个小问题。
如果你有一个不使用反射的解决方案,那就使用它。
发布于 2009-06-09 16:33:32
我通常选择使用Spring等框架进行显式初始化。过度使用反射会导致代码很难维护,或者至少很难阅读。
尽管现代JVM的反射速度更快,但您的性能仍然受到影响。
发布于 2009-06-09 16:16:23
反射在web框架中无处不在。像Struts2这样的面向动作的框架使用反射来使用请求中的参数初始化每个动作的属性。像Hibernate这样的JPA实现使用反射来初始化实体的属性。像Spring、Pico和Guice这样的依赖注入系统使用反射来初始化各种对象的复杂依赖图。
这些项目的成功表明了反射在此应用程序中的可行性。
https://stackoverflow.com/questions/970992
复制相似问题