Я хочу ввести класс A где-нибудь с GIN. Конструктор класса A требует знать идентификатор во время выполнения плюс два других класса B и C. В конструкторах B и C требуется один и тот же идентификатор A в качестве параметров.Как распространять значение во время инъекции с помощью GIN
Здесь приведен пример классов.
public class A {
@Inject
public A(String id, B b, C c)
{
...
}
}
public class B {
@Inject
public B(String id)
{
...
}
}
public class C {
@Inject
public C(String id)
{
...
}
}
Как я могу распространить идентификатор на все классы во время инъекции?
Одним из решений является использование AssistedInjectionFactory с методом создания для всех трех классов, но для этого необходимо изменить конструктор, чтобы использовать фабрику для создания экземпляра B и C.
Есть другие способы использовать GIN и избежать кода шаблона конструктора A?
Это также работает, если я хочу, чтобы создать различные экземпляры с различными идентификаторами ? – Fedy2
Да, ранее для создания нового экземпляра A вы должны сказать «поставщику», каким должен быть следующий идентификатор. Например, статическим способом, например 'MyModule.nextId =" whatever ";' –
Протестировано и отлично работает. – Fedy2