Я только начал изучать, как использовать Guice, и у меня возникли проблемы с настройкой вспомогательных инъекций. У меня есть следующий интерфейс:Guice: не может вводить вспомогательный список <Long>
public interface Individual extends Comparable<Individual>, Iterable<Long>{ ... }
Он будет создан заводом. Конструктор должен получить список длинный:
public interface IndividualFactory {
public Individual createIndividual(List<Long> chromossomes);
}
Класс реализации имеет @Assisted параметр, чтобы получить список:
public class IndividualImpl implements Individual {
@Inject
public IndividualImpl(
ConfigurationService configurationService,
RandomService randomService,
FitnessCalculatorService fitnessService,
@Assisted List<Long> chromossomes
) { ... }
Наконец, это мой модуль класса:
public class SimpleModule extends AbstractModule {
@Override
protected void configure() {
bind(Individual.class).to(IndividualImpl.class);
install(new FactoryModuleBuilder().implement(Individual.class,
IndividualImpl.class).build(IndividualFactory.class));
}
Проблема заключается в том, что эта ошибка отображается при запуске проекта:
1) No implementation for java.util.ArrayList<java.lang.Long> annotated with @com.google.inject.assistedinject.Assisted(value=) was bound.
while locating java.util.ArrayList<java.lang.Long> annotated with @com.google.inject.assistedinject.Assisted(value=)
for parameter 3 at implementation.entities.IndividualImpl.<init>(IndividualImpl.java:25)
at SimpleModule.configure(SimpleModule.java:36)
Если я просто удаляю вспомогательный параметр (не только аннотацию, но и сам параметр), все работает нормально. Я не могу понять, что я делаю неправильно. Я следил за всеми учебниками Guice, которые я нашел, и не смог найти пример вспомогательного параметра, используя Список <>; однако, даже если я изменяю этот параметр на Integer, например, я получаю ту же ошибку.
это полностью имеет смысл. Я пробовал это раньше, но сделал что-то неправильно и не мог определить, что. Теперь это просто сработало. По вашему предложению мне понравилось. Мне нужно что-то изменить в коде, но я обязательно это сделаю. –