选择哪个库来在运行时生成类

发布于 2024-11-16 08:37:51 字数 154 浏览 2 评论 0原文

我需要在运行时扩展类,特别是检测对类状态所做的更改。如果可能的话,我希望能够通过拦截字段分配来检测更改,如果不拦截设置器也可以。我应该使用哪个库以及为什么? javassist 或 cglib 或?这可以用 java.lang.reflect.Proxy 实现吗?你能比较一下这些库吗? 谢谢。

I need to extend classes at runtime, particularly to detect changes made to classes state. If it's possible I would like to be able to detect changes by intercepting field assignments, if not intercepting setters would be ok. Which library should I use and why ? javassist or cglib or ? Is this possible with java.lang.reflect.Proxy ? Can you compare these libraries ?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光的暖冬 2024-11-23 08:37:51

要拦截接口中定义的 setter,可以使用代理。

要拦截方法调用,您可以使用 AOP(如 AspectJ)。

然而,为了捕获字段分配,我会使用字节码库,如 ASM、BCEL、cglib 或 javassist。我更喜欢 ASM,它速度很快,并且有一些工具可以使编写字节代码更容易。

To intercept setters defined in an interface, you can use a Proxy.

To intercept method calls you can use an AOP like AspectJ.

However, to trap field assignments, I would use a byte code library like ASM, BCEL, cglib or javassist. I prefer ASM and it is fast and has some tools to make writing the byte code easier.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文