所以,DefaultSettings
既是FirstSettings
和SecondSettings
,即实现:
public class DefaultSettings implements FirstSettings, SecondSettings
{
}
假设你有一个类EngineA
和EngineB
public class EngineA
{
@Inject
private FirstSettings settings;
}
public class EngineB
{
@Inject
private SecondSettings settings;
}
,你想注入相同实现。
你可以声明接口DefaultSettingsInterface
public interface DefaultSettingsInterface extends FirstSettings, SecondSettings
{
}
,使DefaultSettings
实施DefaultSettingsInterface
public class DefaultSettings implements DefaultSettingsInterface
{
}
然后配置可能是:
bind(FirstSettings.class).to(DefaultSettingsInterface.class);
bind(SecondSettings.class).to(DefaultSettingInterface.class);
bind(DefaultSettingsInterface.class).to(DefaultSettings.class).in(Singleton.class);
谢谢,鲍里斯! 我相信你的解决方案可行! 我刚刚发现了另一种方式: bind(FirstSettings.class)。 (DefaultSettings.class)。 (Singleton.class); bind(SecondSettings.class)。 (FirstSettings.class)。 (Singleton.class); 它似乎也起作用。 你觉得呢? – Pavel 2011-01-25 10:23:12
我不知道FirstSettings扩展了SecondSettings。在那种情况下,它是有效的并且更短。发布您的解决方案作为答案,并在一段时间后推广它作为最好的:) – 2011-01-25 10:30:29
是的,这是真的。我的错,我没有提到:) – Pavel 2011-01-25 10:37:15