前几天,一位同事向我介绍了BCEL,根据他的解释和快速阅读,这是一种在运行时修改字节码的方法。我的第一个想法是这听起来很危险,我的第二个想法是它听起来很酷。然后我又想了想,我回想起codinghorror post on monkey-patching,意识到这基本上是一回事。有没有人用过BCEL做一些实际的事情?我是不是说这基本上就是运行时的补丁,或者我错过了什么?
发布于 2008-09-03 20:15:16
它比经典的猴子补丁更低级一些,而且据我所知,已经加载到VM中的类没有更新。只支持再次保存到类文件中,不支持修改运行时类。
发布于 2008-09-03 22:23:28
来自BCEL的常见问题解答:
BCEL :我能用
动态创建或修改类吗?
答: BCEL在util包中包含有用的类,即ClassLoader和JavaWrapper.Take。请看ProxyCreator示例。
但是加密卡是...嗯..。有争议,如果您的语言不支持它,您可能不应该使用它。
如果你有一个很好的用例,我可以建议嵌入Jython吗?
发布于 2008-09-04 10:13:57
你可以把它看作是猴子的补丁。我不喜欢使用它(也许我从来没有遇到过好的用例?),但要熟悉它(了解Spring和Hibenrate如何使用它以及为什么使用它)。
https://stackoverflow.com/questions/42452
复制相似问题