Предположим, мы хотим @Inject
Строки. Я создаю Module
:
public class StringModule extends AbstractModule{
@Provides
String black() {
return "black";
}
@Provides
String white() {
return "white"
}
}
и теперь запрашиваю введенное значение:
@Inject
private String wantWhiteHere;
Очевидно, Guice выдаст ошибку, поскольку привязка неоднозначна. Я знаю, что могу получить white
, если я использую аннотацию @Named
так:
public class StringModule extends AbstractModule{
@Named("black")
@Provides
String black() {
return "black";
}
@Named("white")
@Provides
String white() {
return "white"
}
}
и затем:
@Named("white")
@Inject
private String iGotWhiteHere;
Но я хочу вот что:
public class StringModule extends AbstractModule{
@Black
@Provides
String black() {
return "black";
}
@White
@Provides
String white() {
return "white"
}
}
.
@White
@Inject
private String tryingToGetWhiteHere;
Возможно ли это? Когда я делаю это, исключение:
Привязка к java. lang.String уже настроен ...
Есть ли что-нибудь, что я могу настроить для достижения этого?
Моя версия Guice 4.2.3