【问题标题】:Which library to choose for generating classes at runtime选择哪个库在运行时生成类
【发布时间】:2016-03-04 17:24:39
【问题描述】:

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

【问题讨论】:

    标签: java proxy bytecode javassist cglib


    【解决方案1】:

    要拦截接口中定义的设置器,您可以使用代理。

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

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

    【讨论】:

    • 您也可以使用 AsspectJ 拦截字段分配。 before(int i) : set(int Foo.x) && args(i) { ... }AspectJ Quick Reference
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多