给定一个类层次结构:
A - > B - > C - > instanceOfC
是否可能(以及如何)在运行时临时插入一个类,如下所示:
A - > B - > B' - > C - > instanceOfC?
如果你使用AspectJ就可以了.AspectJ有一个declare parents
声明,可以让你做到这一点,并通过加载时间编织你也应该能够在运行时这样做.但是,您将无法在已加载的类上执行此操作(至少不容易,如果您先卸载该类,它可能会起作用).
参考:
但你想在这里试图解决错误的问题.我想说尝试用聚合替换继承,让C
一个类型的成员D
委托给哪些功能,然后传递一个不同的实现D
.这就是所谓的战略模式,它是一种更清洁的做事方式(也是可以测试的)