重申您要执行的操作。
在JVM中,存在ClassA的实例。您想动态地修改ClassA的类层次结构,以便存在一个新类ClassB,该类继承自ClassA。然后,您想实例化ClassB的实例,但是让它的子类实现是ClassA的现有实例的实现。类似于内存替换。
您可能需要研究http://www.jboss.org/javassist。您需要做的是替换ClassLoader,然后确定何时加载ClassA,然后实例化。然后,您需要构造ClassB并返回它。
更新资料
经过更多研究之后,您仍然可以做自己想做的事情。像Eclipse这样的IDE在调试时都支持HotSwap’ing方法的实现。他们使用Instrumentation
API。
http://zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/
您可以替换方法主体,但不能自己添加或删除方法。因此,虽然您将无法将类型更改为新的类型,但是可以将方法实现完全替换为新的实现。



