Dagger 2 inject() 包含一个依赖循环
Dagger 2 inject() contains a dependency cycle
我在尝试迁移到 Dagger 2 的 Dagger 中有以下设置:
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
我错过了什么吗?我尝试用 Provider
替换 Lazy
但结果是一样的。
我的问题是我使用的是 Dagger 的 2.0 版,它仍然是一个开放的 issue。一旦我将它更新到当前的 2.1 版本,问题就不再存在了。
我在尝试迁移到 Dagger 2 的 Dagger 中有以下设置:
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
我错过了什么吗?我尝试用 Provider
替换 Lazy
但结果是一样的。
我的问题是我使用的是 Dagger 的 2.0 版,它仍然是一个开放的 issue。一旦我将它更新到当前的 2.1 版本,问题就不再存在了。