安德娜
今天,我想知道为什么在编译/应用程序启动期间,像“休眠”之类的框架使用反射而不是代码生成(例如,使用诸如BCEL或ASM之类的库)。
是否由于历史原因(在Hibernate
编写本文时,没有这样的库可以实时生成字节码),现在每个人都在使用这种方法?
我认为生成代码的方法会比使用反射的方法更快。
脂蛋白
是的Hibernate
,尽管可能不会像您想象的那样大,但是代码生成可能会受益。
- 首先,Reflection在后台使用字节码生成,并且它并不太慢。
- 您不能仅使用字节码生成来做某种事情。例如,反射使您可以访问私有字段并调用私有方法,而字节码生成则是不可能的(除非您使用某些不可移植的hack)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句