Guice Modules.override 关于在多个模块中指定的绑定?

Guice Modules.override on binding specified in multiple modules?

我有两个 Guice 模块,每个模块都在同一个界面上执行 @Provides。每个独立运行就好了。

现在我有第三个模块想要引入这两个模块。我希望第 3 个模块的 @Provides 胜过其他模块,这似乎是 Modules.override 的理想选择。确实,这有效。

Modules.override(childModule1).with(parent);

parent 胜过 child 的绑定。太棒了!

然而,这失败了:(。

Modules.override(childModule1, childModule2).with(parent);

在那种情况下,它抱怨 childModule2 对 Foo 的绑定是 "already bound"。看起来覆盖仅在有一个子模块提供时才有效。有什么我遗漏的吗?

我想出了一个解决方案,尽管它似乎完全属于 hack 类别。我不得不嵌套覆盖。

Modules.override(Modules.override(childModule1).with(childModule2)).with(parent);