【问题标题】:Is it possible to adapt a running class dynamically using reflection?是否可以使用反射动态调整正在运行的类?
【发布时间】:2013-08-14 22:55:19
【问题描述】:

假设我有一个“ABC”类正在运行并且只有一种方法,比如 run()。

使用反射,我想检查“ABC”是否有一个名为“walk()”的方法。由于 'ABC' 没有 'walk()',因此搜索将返回负数。但是我是否可以动态添加插件或更新“ABC”以包含“walk()”方法(例如来自插件存储库)?我不想停止“ABC”,而是对其进行调整以即时处理请求……可能吗?

【问题讨论】:

    标签: java class dynamic reflection


    【解决方案1】:

    是的,这是可能的。您正在寻找的东西称为“字节码检测”。您可以在类加载时执行此操作并将修改后的字节码传递给类加载器或将修改后的类保存到磁盘。它是用例如完成的。 javassist 库。

    有关如何修改方法的示例,请查看http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html,但也可以添加新方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多