Итак, 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);