所以,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