CompositeType.java:

ел бы иметь возможность внедрить универсальную реализацию универсального интерфейса с помощью Guice.

public interface Repository<T> {
  void save(T item);
  T get(int id);
}

public MyRepository<T> implements Repository<T> {
  @Override
  public void save(T item) {
    // do saving
    return item;
  }
  @Override
  public T get(int id) {
    // get item and return
  }
}

В C # используя Castle.Windsor, я бы смогсделать:

Component.For(typeof(Repository<>)).ImplementedBy(typeof(MyRepository<>))

но я не думаю, что эквивалент существует в Guice. Я знаю, что могу использоватьTypeLiteral в Guice зарегистрировать отдельные реализации, но есть ли способ зарегистрировать их все сразу, как в Виндзоре?

Редактировать:

Вот пример использования:

Injector injector = Guice.createInjector(new MyModule());
Repository<Class1> repo1 = injector.getInstance(new Key<Repository<Class1>>() {});
Repository<Class2> repo2 = injector.getInstance(new Key<Repository<Class2>>() {});

Хотя более вероятное использование будет инъекцией в другой класс:

public class ClassThatUsesRepository {
  private Repository<Class1> repository;

  @Inject
  public ClassThatUsesRepository(Repository<Class1> repository) {
    this.repository = repository;
  }
}

Ответы на вопрос(4)

Ваш ответ на вопрос