我如何动态创建未知类的子类?

时间:2015-09-29 08:57:06

标签: java inheritance dynamic-programming

这是我的情景。我有一个插件系统。插件可以通过插件的主列表在运行时相互检测和查找。 层次结构是这样的

Base Class A
----Unknown Class B extends A
--------Known method from Class A, we'll call it E
--------Dynamically generated Class F extends B
------------Overridden Method E
------------Other methods inherited from A and B

F应该从B继承行为,但E被覆盖的例外。然后将F与B分开实例化为具有相似但不相同行为的不同对象。 B类在编译时是未知的,但它可以通过迭代来识别,并在插件的主列表中检查A的实例。

我的具体案例涉及游戏。不一定是我在做什么,但一个很好的例子就是找到其他插件添加的每把剑,然后制作一把剑的新副本,具有相同的能力,除了它射击火而不是任何奇特的挥杆效果最初有,并且方法E确定当剑摆动时会发生什么。

1 个答案:

答案 0 :(得分:2)

您可以使用像javassist这样的字节码工程工具包。它允许你 create new classes based on your existing class并允许您change the method body