Java 是否可以使用反射动态调整正在运行的类?

Java 是否可以使用反射动态调整正在运行的类?,java,class,dynamic,reflection,Java,Class,Dynamic,Reflection,假设我有一个正在运行的类“ABC”,它只有一个方法,比如run() 使用反射,我想检查“ABC”是否有一个名为“walk()”的方法。由于“ABC”没有“walk()”,因此搜索将返回负数。但我是否可以动态添加插件或更新“ABC”以包含“walk()”方法(比如从插件库中)?我不想停止“ABC”,而是对其进行调整,以满足动态请求。可能吗?是的,可能。您正在寻找的是所谓的“字节码检测”。您可以在类加载时执行此操作,并将修改后的字节码传递给类加载程序或将修改后的类保存到磁盘。这是通过javassis

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


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

是的,可能。您正在寻找的是所谓的“字节码检测”。您可以在类加载时执行此操作,并将修改后的字节码传递给类加载程序或将修改后的类保存到磁盘。这是通过javassist库来完成的

关于如何修改方法的示例,请参见,但也可以添加新方法