-1

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

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

4

1 回答 1

0

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

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

于 2013-08-13T11:08:18.067 回答