У меня есть следующие настройки в Dagger, что я пытаюсь перейти на Dagger 2:Dagger 2 инъекционные() содержит цикл зависимости
public class Origin {
final A a;
public Origin(A a) {
this.a = a;
}
}
public class A {
final B b;
@Inject public A (B b) {
this.b = b;
}
}
public class B {
final Lazy<A> a;
@Inject public B (Lazy<A> a) {
this.a = a;
}
}
Тогда на моем модуле у меня есть:
@Provides @Singleton Origin providesOrigin(A a) {
return new Origin(a);
}
Проблема, даже если я использую Lazy
, Dagger 2 дает мне следующую ошибку компиляции времени:
error: AppComponent.inject() contains a dependency cycle
Я что-то упустил? Я попытался заменить Lazy
на Provider
, но результат тот же.
Я думаю, что это сработает, если вы будете лениться от B до A. –
К сожалению, это не поможет. :( –
Как вы создадите экземпляр с «новым» -значением? У вас будет тот же цикл. – salcosand