是否可以在Java中将父级动态注入类层次结构?

blu*_*lds 7 java inheritance

给定一个类层次结构:

A - > B - > C - > instanceOfC

是否可能(以及如何)在运行时临时插入一个类,如下所示:

A - > B - > B' - > C - > instanceOfC?

Sea*_*oyd 6

AspectJ的

如果你使用AspectJ就可以了.AspectJ有一个declare parents声明,可以让你做到这一点,并通过加载时间编织你也应该能够在运行时这样做.但是,您将无法在已加载的类上执行此操作(至少不容易,如果您先卸载该类,它可能会起作用).

参考:

继承与聚合

但你想在这里试图解决错误的问题.我想说尝试用聚合替换继承,让C一个类型的成员D委托给哪些功能,然后传递一个不同的实现D.这就是所谓的战略模式,它是一种更清洁的做事方式(也是可以测试的)