2016-03-30 79 views
3

我有匕首以下設置,我試圖遷移到匕首2:匕首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,匕首2給了我下面的編譯時錯誤:

error: AppComponent.inject() contains a dependency cycle

我錯過了什麼?我試着用Provider替換Lazy,但結果是一樣的。

+0

我認爲這將工作,如果你懶惰從B移動到A. –

+0

可悲的是,這並沒有幫助。 :( –

+0

你將如何使用「新」語句創建實例?您將擁有相同的循環。 – salcosand

回答

3

我的問題是我正在使用匕首版本2.0,這仍然是一個開放的issue。一旦我將它更新到當前的2.1版本,問題就不再存在。