我自己有一个OverrideModuleC2, 现在想用它在ModuleA中把ModuleC2替换掉。可是ModuleB是不能动的。求问如何做这个替换?
class moduleA extends AbstractModule {
@Override
protected void configure() {
install(Modules.override(new ModuleB()).with(new OverrideModuleB()));
// something else
}
}
class ModuleB extends AbstractModule {
@Override
protected void configure() {
install(new ModuleC1());
install(new ModuleC2());
install(new ModuleC3());
}
}
class moduleA extends ModuleB {
@Override
protected void install2() {
install(new ModuleC2());
// something else
}
}
abstract class ModuleB extends AbstractModule {
@Override
protected void configure() {
install(new ModuleC1());
install2();
install(new ModuleC3());
}
abstract void install2();
}
是不是你想要的
ModuleB 不能改,因为好多别的project引用。这种方法要迫使别的projet实现install2方法。
可不可以实现ModuleB2,install ModuleB 并替换ModuleC2 ? 然后ModuleA里面使用ModuleB2, 如下:
class ModuleB2 extends AbstractModule {
@Override
protected void configure() {
install(Modules.override(new ModuleB()).with(new ModuleC2()));
}
}
class ModuleA extends AbstractModule {
@Override
protected void configure() {
// Remove below line and use ModuleB2 instead
// install(Modules.override(new ModuleB()).with(new ModuleC2()));
install(Modules.override(new ModuleB2()).with(new OverrideModuleB()));
}
}